PySide6的样式表

PySide6 提供了对 Qt 样式表(Qt Style Sheets,简称 QSS)的支持,这是一种类似于 CSS 的样式表语言,用于自定义 Qt 应用程序的外观。

1. 什么是 Qt 样式表(QSS)

Qt 样式表是一种声明性的样式表语言,类似于 CSS(层叠样式表)。它允许开发者通过编写样式规则来定义控件的外观,如颜色、字体、边框等。通过使用 QSS,开发者可以轻松地实现应用程序的视觉风格统一,而不需要修改底层的 C++ 代码。


2. 如何在 PySide6 中使用样式表

在 PySide6 中,可以使用 setStyleSheet() 方法为单个控件或整个应用程序设置样式表。样式表可以应用于单个控件,也可以通过设置父控件的样式表来影响其所有的子控件。

示例 1:为单个控件设置样式表
复制代码
from PySide6.QtWidgets import QApplication, QPushButton

app = QApplication([])

button = QPushButton("Click")
button.setStyleSheet("""
    QPushButton {
        background-color: #4CAF50;
        color: white;
        border-radius: 5px;
        padding: 10px;
    }
    QPushButton:hover {
        background-color: #45a049;
    }
    QPushButton:pressed {
        background-color: #3e8e41;
    }
""")

button.show()
app.exec()

在这个示例中,我们为 QPushButton 设置了背景颜色、文本颜色、圆角和内边距。此外,我们还定义了按钮在鼠标悬停和按下时的不同样式。

示例 2:为整个应用程序设置样式表
复制代码
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton

app = QApplication([])

window = QMainWindow()
window.setStyleSheet("""
    QMainWindow {
        background-color: #f0f0f0;
    }
    QPushButton {
        background-color: #2196F3;
        color: white;
        border-radius: 5px;
        padding: 10px;
    }
""")

button = QPushButton("Click Me")
window.setCentralWidget(button)

window.show()
app.exec()

在这个示例中,我们为 QMainWindowQPushButton 设置了样式表。QMainWindow 的背景颜色被设置为浅灰色,而按钮的样式与前一个示例类似。


3. 样式表的基本语法

Qt 样式表的语法与 CSS 非常相似,以下是一些常见的样式表规则:

  • 选择器 :用于指定要应用样式的控件。例如,QPushButton 表示所有 QPushButton 控件。
  • 属性 :用于定义控件的外观属性。例如,background-color 定义控件的背景颜色。
  • :属性的具体值。例如,#4CAF50 是背景颜色的值。
常见的样式属性
  • background-color: 设置背景颜色。
  • color: 设置文本颜色。
  • border: 设置边框样式。
  • border-radius: 设置边框的圆角。
  • padding: 设置内边距。
  • margin: 设置外边距。
  • font-family: 设置字体。
  • font-size: 设置字体大小。
  • font-weight: 设置字体粗细。
伪状态

Qt 样式表支持伪状态(Pseudo-states),类似于 CSS 中的伪类(如 :hover:active 等)。以下是一些常见的伪状态:

  • :hover: 鼠标悬停时的状态。

  • :pressed: 控件被按下时的状态。

  • :checked: 控件被选中时的状态(如复选框或单选按钮)。

  • :disabled: 控件禁用时的状态。

    QPushButton:hover {
    background-color: #45a049;
    }

    QPushButton:pressed {
    background-color: #3e8e41;
    }

4. 继承与覆盖

在 Qt 样式表中,样式规则是继承的。子控件会继承父控件的样式规则,但子控件的样式规则可以覆盖父控件的样式规则。

复制代码
QWidget {
    background-color: #f0f0f0;
}

QPushButton {
    background-color: #4CAF50;
}

QPushButton#myButton {
    background-color: #2196F3;
}

在这个示例中,所有的 QWidget 控件的背景颜色为浅灰色。QPushButton 的背景颜色为绿色,但 QPushButton 控件如果具有 objectNamemyButton,则其背景颜色为蓝色。

5. 使用资源文件

Qt 样式表还可以引用资源文件中的图像、图标等资源。通过使用 QFileQResource,可以将资源文件加载到应用程序中,并在样式表中使用。

复制代码
QPushButton {
    background-image: url(:/icons/button_background.png);
}

在这个示例中,background-image 属性引用了一个资源文件中的图像。

6. 调试样式表

在开发过程中,可能需要调试样式表以确保其正确应用。Qt Designer 是一个非常有用的工具,可以在设计界面的同时预览样式表的效果。此外,PySide6 还提供 QStyleSheetWatcher 类,用于在运行时动态更新样式表。

通过使用 Qt 样式表,PySide6 开发者可以轻松地自定义应用程序的外观,而无需深入底层的 C++ 代码。样式表的语法类似于 CSS,支持选择器、属性、伪状态等功能,使得界面设计更加灵活和直观。无论是简单的按钮样式,还是复杂的界面主题,Qt 样式表都能满足开发者的需求。

样式表的一些进一步的学习记录在此可以参考:https://blog.csdn.net/xulibo5828/category_12673318.html

相关推荐
No0d1es41 分钟前
CPA青少年编程能力等级测评试卷及答案 Python编程(三级)
python·青少年编程·cpa
惜.己1 小时前
pytest中使用ordering控制函数的执行顺序
开发语言·python·pytest
数据智能老司机1 小时前
使用 Python 进行并行与高性能编程——并行编程导论
python·性能优化·编程语言
精灵vector2 小时前
【Agentic】通过LangGrah实现RAG评分和重写
python
狗都不学爬虫_2 小时前
JS逆向 - (国外)SHEIN站 - 请求头(armorToken、Anti-in)
javascript·python·ajax·网络爬虫·wasm
一百天成为python专家2 小时前
K-近邻算法
数据结构·python·算法·pandas·近邻算法·ipython·python3.11
这儿有一堆花2 小时前
Python程序打包成EXE完全指南:四种方法详解与实战
python
微小冷2 小时前
Vimba相机二次开发教程,基于Python
开发语言·python·二次开发·相机开发·vimba相机·vimba