在一个应用程序中级联多个 Qt 样式表

Cascading Multiple Qt Style Sheets in one application

Qt(因此 PyQt)允许您将 QSS(Qt 样式 Sheet)文件添加到 QApplication,并为您创建的每个单独的小部件添加一个。您可以使用以下 Python/PyQt 代码设置应用程序的样式 sheet:

# app is a QApplication and styleSheet is a str.
app.setStyleSheet(styleSheet)

但是,setStyleSheet()功能只允许您为QApplication指定一个QSS文件。这与 CSS 不同,后者允许将任意数量的样式 sheet 应用于单个网页。

我正在用 PyQt 编写一个程序,它允许用户自定义主题。该程序有一个主要的 QSS 文件,主题应该能够包含附加的 QSS,这些 QSS 将层叠在它之上。但是,由于明显的 Qt 限制,这似乎是不可能的。

我想到的一个想法是,我可以将程序的默认样式 sheet 分配给 QApplication,将当前主题的样式 sheet 分配给 QMainWindow。不过,这似乎是一种解决方法,而不是一个好主意。

有没有像这样添加两个Qt Style Sheet的好方法?

你可以这样做:

app.setStyleSheet(stylesheet1 + stylesheet2)

这与正常 HTML 的工作方式相同,其中样式表只是按照它们在文档中出现的顺序连接在一起。之后,CSS 特异性的标准规则适用。