Example #1
0
class TitleBar(QWidget):

    maxNormal = False
    def __init__(self):
        super().__init__()
        self.minimize = QToolButton(self)
        self.maximize = QToolButton(self);
        self.close= QToolButton(self);
        self.iconLabel = QLabel(self);
        self.titleLabel = QLabel(self);

        self.objPixmap = QPixmap("src\logo_school.png")
        self.iconLabel.setPixmap(self.objPixmap.scaled(20,20))
        self.titleLabel.setText("unhealthy")

        pix = QIcon(self.style().standardPixmap(QStyle.SP_TitleBarCloseButton))
        self.close.setIcon(pix)
        self.maxPix = QIcon(self.style().standardPixmap(QStyle.SP_TitleBarMaxButton))
        self.maximize.setIcon(self.maxPix)
        pix = QIcon(self.style().standardPixmap(QStyle.SP_TitleBarMinButton))
        self.minimize.setIcon(pix)
        self.restorePix = QIcon(self.style().standardPixmap(QStyle.SP_TitleBarNormalButton))


        self.minimize.setMinimumHeight(20)
        self.close.setMinimumHeight(20)
        self.maximize.setMinimumHeight(20)
#        set.setMinimumHeight(20)

        self.hbox =QHBoxLayout(self)
        self.hbox.addWidget(self.iconLabel)
        self.hbox.addWidget(self.titleLabel)
#        hbox.addWidget(set)
        self.hbox.addWidget(self.minimize)
        self.hbox.addWidget(self.maximize)
        self.hbox.addWidget(self.close)
        self.hbox.insertStretch(2, 500)
        self.hbox.setMargin(2)
        self.hbox.setSpacing(0)

        self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        #设置标签的文本颜色,大小
        self.setStyleSheet("QLabel{color:#FF3333;font-size:12px;font-weight:bold;}")
        #设置左边距
        self.titleLabel.setStyleSheet("margin-left:3px;")
        self.setWindowFlags(Qt.FramelessWindowHint)
 
    @pyqtSlot()
    def on_minimize_clicked(self):
        self.parentWidget().showMinimized()

    @pyqtSlot()
    def on_maximize_clicked(self):
        if self.maxNormal :
            self.parentWidget().showNormal()
            self.maxNormal = not self.maxNormal
            self.maximize.setIcon(self.maxPix)
        else:
            self.parentWidget().showMaximized()
            self.maxNormal = not self.maxNormal
            self.maximize.setIcon(self.restorePix)

    def mousePressEvent(self, e):
        self.startPos = e.globalPos()
        self.clickPos = self.mapToParent(e.pos())
        #self.clickPos = e.pos()

    def mouseMoveEvent(self, e):
        if self.maxNormal:
           return
        self.parentWidget().move(e.globalPos() - self.clickPos)
        #self.move(e.globalPos() - self.clickPos)

    def mouseDoubleClickEvent(self, e):
        if (e.button() == Qt.LeftButton and e.y() <= self.height()):
            if not self.maxNormal:
                self.parentWidget().showMaximized()
                self.maxNormal = not self.maxNormal
                self.maximize.setIcon(self.restorePix)
            else:
                self.parentWidget().showNormal()
                self.maxNormal = not self.maxNormal
                self.maximize.setIcon(self.maxPix)