【问题标题】:Disabled QGroupBox title shadow (aka etching)禁用 QGroupBox 标题阴影(又名蚀刻)
【发布时间】:2013-07-24 09:52:06
【问题描述】:

彻底查看禁用的 QGroupBox 标题(见附图)。

您会注意到标题字母下方有一个 1 像素的微小白色阴影。

在默认样式表上几乎看不到,但如果您设置深色背景和文本颜色,它可能会更烦人。

我可以做些什么来禁用这个阴影,或者至少改变它的颜色?

【问题讨论】:

    标签: qt qt4 qt5 qstyle qgroupbox


    【解决方案1】:

    你用的是什么风格?它看起来像“基本”Windows 风格。如果您想摆脱文本阴影,您可以实现自己的样式并更改为禁用的组框绘制文本的方式。阅读有关QStyle 以及如何创建自定义样式here 的更多信息。该链接适用于 Qt 5.1,但原理与 Qt 4 相同。

    更简单的方法是更改​​QGroupBox 对象的调色板。将颜色组QPalette::Disabled 和颜色角色QPalette::Light 标识的颜色更改为alpha 通道设置为0 的任何颜色,例如QColor(0, 0, 0, 0)。这将有效地禁用文本阴影。但是,它也会禁用线条的阴影,因此可能不是您想要的。

    【讨论】:

    • 你说我可以实现我自己的风格来去除蚀刻,而不需要这个颜色技巧?究竟是怎么做到的?
    • 是的。我用 QStyle 类的文档链接更新了我的答案。它有一个关于如何创建自定义样式的部分。
    • 没有QSS解决方案吗?
    【解决方案2】:

    我找到了解决办法:

    很遗憾,您无法移除禁用的文本阴影(也称为蚀刻),但您可以使用肮脏的解决方法更改其颜色:

    看起来阴影效果总是从当前调色板的 ColorGroup "Disabled" 和 ColorRole "Light" 中获取颜色。因此,您只需将此颜色设置为小部件的背景颜色:

    QPalette p = myWidget->palette();
    p.setColor(QPalette::Disabled, QPalette::Light, QColor(0,0,0)); <- place your widget bg color here
    myWidget->setPalette(p);
    

    I've found this solution here

    【讨论】:

    • 这对我不起作用...看起来不错。相同的答案,但根本不起作用,任何颜色都不起作用。我在想......也许问题在于它是一个自定义小部件。我会检查一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    相关资源
    最近更新 更多