【发布时间】:2015-05-31 05:58:19
【问题描述】:
Qt(以及 PyQt)允许您将 QSS(Qt 样式表)文件添加到 QApplication,并为您创建的每个单独的小部件添加一个。您可以使用以下 Python/PyQt 代码设置应用程序的样式表:
# app is a QApplication and styleSheet is a str.
app.setStyleSheet(styleSheet)
但是,setStyleSheet() 函数只允许您为 QApplication 指定一个 QSS 文件。这与 CSS 不同,后者允许将任意数量的样式表应用于单个网页。
我正在用 PyQt 编写一个允许用户自定义主题的程序。该程序有一个主 QSS 文件,并且主题应该能够包含附加的 QSS,这些 QSS 将层叠在它之上。然而,由于这个明显的 Qt 限制,这似乎是不可能的。
我想到的一个想法是我可以将程序的默认样式表分配给 QApplication,并将当前主题的样式表分配给 QMainWindow。不过,这似乎是一种解决方法,而不是一个好主意。
有没有像这样添加两个 Qt 样式表的好方法?
【问题讨论】:
-
为什么不:
app.setStyleSheet(stylesheet1 + stylesheet2)? -
@ekhumoro 这是否会导致
stylesheet2中的样式规则覆盖stylesheet1中的样式规则,因为它们排在第二位? -
这与普通的 HTML 没有什么不同,其中样式表只是按照它们在文档中出现的顺序连接在一起。之后,应用 CSS 特性的标准规则。
-
@ekhumoro 您的建议有效!这应该是一个可以接受的答案。
-
@agentnate。好的,谢谢 - 我已经添加了答案。
标签: qt pyqt qt5 pyqt5 qtstylesheets