Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个应用程序中级联多个Qt样式表_Qt_Pyqt_Qt5_Pyqt5_Qtstylesheets - Fatal编程技术网

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

在一个应用程序中级联多个Qt样式表,qt,pyqt,qt5,pyqt5,qtstylesheets,Qt,Pyqt,Qt5,Pyqt5,Qtstylesheets,Qt(因此PyQt)允许您将QSS(Qt样式表)文件添加到QApplication,并为您创建的每个小部件添加一个。您可以使用以下Python/PyQt代码设置应用程序的样式表: # app is a QApplication and styleSheet is a str. app.setStyleSheet(styleSheet) 但是,setStyleSheet()函数只允许您为QApplication指定一个QSS文件。这与CSS不同,CSS允许对单个网页应用任意数量的样式表 我正在用

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

# app is a QApplication and styleSheet is a str.
app.setStyleSheet(styleSheet)
但是,
setStyleSheet()
函数只允许您为QApplication指定一个QSS文件。这与CSS不同,CSS允许对单个网页应用任意数量的样式表

我正在用PyQt编写一个程序,它将允许用户自定义主题。该程序有一个主QSS文件,主题应该能够包含额外的QS,这些QS将级联在它上面。然而,由于这种明显的Qt限制,这似乎是不可能的

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

有没有像这样添加两个Qt样式表的好方法?

您可以执行以下操作:

app.setStyleSheet(stylesheet1 + stylesheet2)

这与普通HTML的工作原理相同,在普通HTML中,样式表只是按照它们在文档中出现的顺序连接在一起。之后,CSS专用性的标准规则适用

为什么不:
app.setStyleSheet(stylesheet1+stylesheet2)
?@ekhumaro这会导致
stylesheet2
中的样式规则覆盖
stylesheet1
中的样式规则,因为它们排在第二位吗?它与普通HTML没有什么不同,样式表只是按照它们在文档中出现的顺序连接在一起。之后,CSS特性的标准规则适用。@ekhumoro您的建议有效!这应该是一个可接受的答案。@agentnate。好的,谢谢-我已经添加了一个答案。