在Qt Designer中,我在首选项中设置了默认的打印/预览样式表,以匹配将包含我的UI的应用程序的样式表。预览时,所有包含的小部件都被正确设置样式,但我的顶级表单不是。为什么?我该怎么办?
例如,使用此样式表:
MyFormBase
{ background: black; color: white; }
QLabel
{ background: transparent; color: yellow; }
和像
这样的UI结构form
(MyFormBase的子类)
label
标签有黄色文字,但它显示在Designer的默认(灰色)背景上。
答案 0 :(得分:0)
当Designer创建预览时,它会构建一个普通的QWidget
作为顶级窗口。因此,使用顶级表单的类名应用的任何样式都不匹配。
对Designer内部的检查表明它应用了一个属性来标记顶层窗口;我们可以选择使用它来设置顶级表单的样式:
[_q_custom_style_disabled="true"], /* for preview in Designer */
MyFormBase
{ background: black; color: white; }
QLabel
{ background: transparent; color: yellow; }
请注意,_q_custom_style_disabled
属性不是Designer的文档功能,因此可能会在没有警告的情况下进行更改。
如果您有许多依赖于顶级窗口小部件的选择器(例如,如果您有MyFormBase > QLabel
),或者如果您担心上面的黑客攻击,则可能需要应用自定义属性:
[role~=Page"]
{ background: black; color: white; }
[role~=Page"] > QLabel
{ background: transparent; color: yellow; }
显然,您必须记住将该属性应用于每个表单的最顶层窗口小部件!