def buildAddRem(self): buttons = QFrame() buttons_layout = QHBoxLayout(buttons) buttons_layout.insertStretch(1) self.connect(self.add, SIGNAL('clicked()'), self.listEditView.addItem) self.connect(self.rem, SIGNAL('clicked()'), self.listEditView.removeItem) buttons_layout.addWidget(self.add) buttons_layout.addWidget(self.rem) self.layout().addWidget(buttons, 1, 0)
def floated_buttons(btns, left=False): """Returns a HBoxLayout with buttons floated to the right or left.""" hbox = QHBoxLayout() for b in btns: hbox.addWidget(b) if left: hbox.addStretch(1) else: hbox.insertStretch(0, 1) return hbox
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)