PyQt5 QDockWidget – 设置样式表

  • Post category:Python

PyQt5中的QDockWidget是一个浮动窗口,可以嵌入主窗口中,便于用户使用。在使用QDockWidget时,我们可以使用样式表对其进行自定义样式设置。

一、设置样式表的基本语法

在使用样式表时,一般我们会使用样式表的基本语法:选择器{属性:值;}。

例如,我们要将QDockWidget的背景颜色设置为浅灰色,我们可以这样写样式表:

QDockWidget {
    background: lightgray;
}

其中,QDockWidget为选择器,background为属性,lightgray为值。这样,我们就能将QDockWidget的背景颜色设置为浅灰色。

二、设置QDockWidget样式表案例1

假设我们要设置QDockWidget的标题栏为粉红色,我们可以在样式表中为QDockWidget的标题栏(QDockWidget::title)设置背景颜色和文本颜色,代码如下:

dockStyleSheet = """
QDockWidget::title {
    text-align: center;
    background-color: pink;
    color: white;
}
"""

dockWidget.setStyleSheet(dockStyleSheet)

在上述示例中,我们使用了QDockWidget::title作为选择器,设置了标题栏的文本居中,背景颜色为粉红色,文本颜色为白色。

三、设置QDockWidget样式表案例2

再举一个例子,我们要为QDockWidget设置边框,可以在样式表中为QDockWidget设置边框线的颜色和粗细,代码如下:

dockStyleSheet = """
QDockWidget {
    border: 2px solid gray;
}
"""

dockWidget.setStyleSheet(dockStyleSheet)

在上述示例中,我们为QDockWidget设置了border属性,将边框颜色设置为灰色,粗细为2px。

通过以上两个例子,我们可以看到,使用样式表可以为QDockWidget设置各种各样的样式,使其更好的展现在用户面前,提高用户的体验感。

完整示例代码:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QTextEdit


class MyMainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        # 创建QDockWidget
        dockWidget = QDockWidget("dock widget", self)

        # 创建QTextEdit
        textEdit = QTextEdit(dockWidget)

        # 设置QDockWidget的小部件
        dockWidget.setWidget(textEdit)

        # 添加QDockWidget到主窗口中
        self.addDockWidget(1, dockWidget)

        # 设置QDockWidget的样式表
        dockStyleSheet = """
        QDockWidget::title {
            text-align: center;
            background-color: pink;
            color: white;
        }
        QDockWidget {
            border: 2px solid gray;
        }
        """
        dockWidget.setStyleSheet(dockStyleSheet)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = MyMainWindow()
    win.show()
    sys.exit(app.exec_())

在以上完整示例代码中,我们创建了一个MyMainWindow类,然后在其中创建了一个QDockWidget,并将其添加到主窗口中。同时,我们也设置了QDockWidget的样式表,为其设置了标题栏样式和边框样式。