我正在使用QSS样式表更改pyQt应用程序中某些元素的外观。这具有覆盖这些元素的许多其他属性的效果(如文档和许多教程中所述)。
现在,我想恢复这些被覆盖的属性,但我还没有设法找到"原始"我的系统上定义了默认主题的样式表。使用这些样式表中的信息,我可以恢复原始外观的其余部分。
有人可以告诉我在哪里找到这些样式表吗?还是有更优雅的方式来实现我的目标?
答案 0 :(得分:0)
没有默认样式表。所有默认样式均由style plugins完成。
设置样式表后,它会创建QStyleSheetStyle
的实例(它是QWindowsStyle
的子类)并将其传递给当前样式。 QStyleSheetStyle
将尝试在当前样式的基础上应用QSS规则,但如果无法实现,则会回退到QWindowsStyle
。
这就是问题开始的地方,因为没有简单的方法来确定特定的QSS规则会做什么。有时它会产生非常精确的效果,有时它会完全破坏正常的造型。此外,确切的结果取决于当前的风格。因此,QSS规则可能在您自己的系统上看起来不错,但不能保证它会在其他系统上这样做。
因此,使用样式表始终是一种妥协。创建自定义QStyle
可以为您提供更多控制,但样式表通常更容易编写和维护。所以这是方便和精确之间的权衡。
但是,还有第三种选择。没做什么。尊重用户对小部件样式的选择 - 或者至少,不要强迫他们接受你的小部件样式。