| 36 | windowMoved = pyqtSignal(QPoint) |
| 37 | |
| 38 | def __init__(self, *args, **kwargs): |
| 39 | super(TitleBar, self).__init__(*args, **kwargs) |
| 40 | # 支持qss设置背景 |
| 41 | self.setAttribute(Qt.WA_StyledBackground, True) |
| 42 | self.mPos = None |
| 43 | self.iconSize = 20 # 图标的默认大小 |
| 44 | # 设置默认背景颜色,否则由于受到父窗口的影响导致透明 |
| 45 | self.setAutoFillBackground(True) |
| 46 | palette = self.palette() |
| 47 | palette.setColor(palette.Window, QColor(240, 240, 240)) |
| 48 | self.setPalette(palette) |
| 49 | # 布局 |
| 50 | layout = QHBoxLayout(self, spacing=0) |
| 51 | layout.setContentsMargins(0, 0, 0, 0) |
| 52 | # 窗口图标 |
| 53 | self.iconLabel = QLabel(self) |
| 54 | # self.iconLabel.setScaledContents(True) |
| 55 | layout.addWidget(self.iconLabel) |
| 56 | # 窗口标题 |
| 57 | self.titleLabel = QLabel(self) |
| 58 | self.titleLabel.setMargin(2) |
| 59 | layout.addWidget(self.titleLabel) |
| 60 | # 中间伸缩条 |
| 61 | layout.addSpacerItem(QSpacerItem( |
| 62 | 40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) |
| 63 | # 利用Webdings字体来显示图标 |
| 64 | font = self.font() or QFont() |
| 65 | font.setFamily('Webdings') |
| 66 | # 最小化按钮 |
| 67 | self.buttonMinimum = QPushButton( |
| 68 | '0', self, clicked=self.windowMinimumed.emit, font=font, objectName='buttonMinimum') |
| 69 | layout.addWidget(self.buttonMinimum) |
| 70 | # 最大化/还原按钮 |
| 71 | self.buttonMaximum = QPushButton( |
| 72 | '1', self, clicked=self.showMaximized, font=font, objectName='buttonMaximum') |
| 73 | layout.addWidget(self.buttonMaximum) |
| 74 | # 关闭按钮 |
| 75 | self.buttonClose = QPushButton( |
| 76 | 'r', self, clicked=self.windowClosed.emit, font=font, objectName='buttonClose') |
| 77 | layout.addWidget(self.buttonClose) |
| 78 | # 初始高度 |
| 79 | self.setHeight() |
| 80 | |
| 81 | def showMaximized(self): |
| 82 | if self.buttonMaximum.text() == '1': |