我可以在Designer预览中设置顶级表单的样式吗?

时间:2016-06-03 08:22:59

标签: preview qt-designer qtstylesheets

在Qt Designer中,我在首选项中设置了默认的打印/预览样式表,以匹配将包含我的UI的应用程序的样式表。预览时,所有包含的小部件都被正确设置样式,但我的顶级表单不是。为什么?我该怎么办?

例如,使用此样式表:

MyFormBase
  { background: black; color: white; }

QLabel
  { background: transparent; color: yellow; }

和像

这样的UI结构
  • MyForm form(MyFormBase的子类)
    • QLabel label

标签有黄色文字,但它显示在Designer的默认(灰色)背景上。

1 个答案:

答案 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; }

显然,您必须记住将该属性应用于每个表单的最顶层窗口小部件!