You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.8 KiB
49 lines
1.8 KiB
# coding: utf-8
|
|
from PySide6.QtCore import Qt
|
|
from PySide6.QtGui import QIcon
|
|
from PySide6.QtWidgets import QLabel, QHBoxLayout, QVBoxLayout
|
|
from qframelesswindow import TitleBar
|
|
|
|
|
|
class CustomTitleBar(TitleBar):
|
|
""" Title bar with icon and title """
|
|
|
|
def __init__(self, parent):
|
|
super().__init__(parent)
|
|
self.setFixedHeight(48)
|
|
self.hBoxLayout.removeWidget(self.minBtn)
|
|
self.hBoxLayout.removeWidget(self.maxBtn)
|
|
self.hBoxLayout.removeWidget(self.closeBtn)
|
|
|
|
# add window icon
|
|
self.iconLabel = QLabel(self)
|
|
self.iconLabel.setFixedSize(18, 18)
|
|
self.hBoxLayout.insertSpacing(0, 10)
|
|
self.hBoxLayout.insertWidget(1, self.iconLabel, 0, Qt.AlignLeft | Qt.AlignVCenter)
|
|
self.window().windowIconChanged.connect(self.setIcon)
|
|
|
|
# add title label
|
|
self.titleLabel = QLabel(self)
|
|
self.hBoxLayout.insertWidget(2, self.titleLabel, 0, Qt.AlignLeft | Qt.AlignVCenter)
|
|
self.titleLabel.setObjectName('titleLabel')
|
|
self.window().windowTitleChanged.connect(self.setTitle)
|
|
|
|
self.vBoxLayout = QVBoxLayout()
|
|
self.buttonLayout = QHBoxLayout()
|
|
self.buttonLayout.setSpacing(0)
|
|
self.buttonLayout.setContentsMargins(0, 0, 0, 0)
|
|
self.buttonLayout.setAlignment(Qt.AlignTop)
|
|
self.buttonLayout.addWidget(self.minBtn)
|
|
self.buttonLayout.addWidget(self.maxBtn)
|
|
self.buttonLayout.addWidget(self.closeBtn)
|
|
self.vBoxLayout.addLayout(self.buttonLayout)
|
|
self.vBoxLayout.addStretch(1)
|
|
self.hBoxLayout.addLayout(self.vBoxLayout, 0)
|
|
|
|
def setTitle(self, title):
|
|
self.titleLabel.setText(title)
|
|
self.titleLabel.adjustSize()
|
|
|
|
def setIcon(self, icon):
|
|
self.iconLabel.setPixmap(QIcon(icon).pixmap(18, 18))
|