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()

在这个示例中,我们为 QMainWindow 和 QPushButton 设置了样式表。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 控件如果具有 objectName 为 myButton,则其背景颜色为蓝色。

5. 使用资源文件

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

复制代码
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

相关推荐
代码山河6 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行6 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
梯度下降者7 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
“AI国潮设计-小江”8 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
benchmark_cc9 小时前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读9 小时前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
外收内放10 小时前
Python基础语法练习题(73)
java·前端·python
锋行天下10 小时前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python
时早玖沐11 小时前
给 AstrBot 写一个天气推送插件:12 次提交、6 个坑
python·开源·ai编程
触底反弹11 小时前
🚀 FastAPI 五大重难点深度剖析:从 500 报错到彻底搞懂 Depends、Pydantic 与 SQLAlchemy
python·fastapi