【问题标题】:Qt: Creating style sheets from paletteQt:从调色板创建样式表
【发布时间】:2012-01-08 02:11:36
【问题描述】:

我有一个带有自定义调色板的多平台 Qt 应用程序,我们已经设置了该调色板来生成我们想要的外观。调色板设置在顶级小部件上,因此它被所有子小部件继承。

然后我想动态改变一些 QPushButtons 的文本颜色。为了寻找最好的方法,我开始阅读我以前不太了解的样式表。这些似乎是改变按钮外观的好选择,他们做到了。但是,只要我使用样式表设置文本颜色,小部件调色板就会跳到默认值。很快就发现样式表与自定义调色板不兼容,并且无法将两者混合使用。我发现的大多数信息都表明应该使用样式表而不是自定义调色板,因为除其他外,样式表提供了跨平台的保证,并且看起来调色板摆弄没有。

由此看来,将我的自定义调色板转换为样式表并将其设置在顶级小部件上似乎是个好主意。然后我可以很容易地使用子样式表更改某些子小部件的一些参数。问题是调色板包含许多我们设置的颜色,这些颜色似乎没有等效的样式表。例如,光、中光和黑暗。由于无法设置这些颜色,我无法使用样式表生成与以前使用自定义调色板相同的外观。

我想知道是否有一种将自定义调色板转换为样式表的简单方法,或者是否有一些文档来描述每种调色板颜色的等效样式表设置。我已经在 google、stackoverflow 和 Qt 参考文档上进行了搜索,但没有找到。

感谢您提供任何信息。

ps。我通过动态修改 QPushButtons 的调色板的 ButtonText 属性解决了我的原始问题。但是如果可能的话,我仍然宁愿使用样式表而不改变我的应用程序的主要外观。

【问题讨论】:

    标签: qt qt4 stylesheet


    【解决方案1】:

    QColor.name() 是该颜色的十六进制字符串。如果要转换为样式表,只需遍历调色板中的所有角色并打印该颜色的.name()。然后,您可以找到相应的样式表属性和伪状态来设置十六进制颜色。

    从调色板切换到样式表时,您可能会发现一件令人沮丧的事情是 CSS 不允许使用变量,因此您必须在任何地方使用十六进制字符串,而不仅仅是定义命名颜色并使用它们。

    【讨论】:

    • 如何遍历调色板中的所有角色?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2013-01-12
    • 2011-05-29
    相关资源
    最近更新 更多