Qt(以及PyQt)允许您向QApplication添加一个QSS(Qt样式表)文件,并为您创建的每个小部件添加一个。您可以使用以下Python/PyQt代码设置应用程序的样式表:
# app is a QApplication and styleSheet is a str.
app.setStyleSheet(styleSheet)
但是,setStyleSheet()
函数只允许您为QApplication指定一个QSS文件。这与CSS不同,CSS允许将任意数量的样式表应用于单个网页。
我正在用PyQt编写一个程序,它将允许用户自定义主题。该程序有一个主QSS文件,主题应该能够包含额外的QSS,这些QSS将级联在它的顶部。然而,由于这个明显的Qt限制,这似乎是不可能的。
我想到的一个想法是,我可以将程序的默认样式表分配给QApplication,将当前主题的样式表分配到QMainWindow。不过,这似乎是一个变通办法,而不是一个好主意。
有没有像这样添加两个Qt样式表的好方法?
你可以做:
app.setStyleSheet(stylesheet1 + stylesheet2)
这与普通HTML的工作原理相同,在普通HTML中,样式表只是按照它们在文档中出现的顺序连接在一起。之后,CSS专用性的标准规则适用。