【发布时间】:2013-07-24 09:52:06
【问题描述】:
彻底查看禁用的 QGroupBox 标题(见附图)。
您会注意到标题字母下方有一个 1 像素的微小白色阴影。
在默认样式表上几乎看不到,但如果您设置深色背景和文本颜色,它可能会更烦人。
我可以做些什么来禁用这个阴影,或者至少改变它的颜色?
【问题讨论】:
标签: qt qt4 qt5 qstyle qgroupbox
彻底查看禁用的 QGroupBox 标题(见附图)。
您会注意到标题字母下方有一个 1 像素的微小白色阴影。
在默认样式表上几乎看不到,但如果您设置深色背景和文本颜色,它可能会更烦人。
我可以做些什么来禁用这个阴影,或者至少改变它的颜色?
【问题讨论】:
标签: qt qt4 qt5 qstyle qgroupbox
你用的是什么风格?它看起来像“基本”Windows 风格。如果您想摆脱文本阴影,您可以实现自己的样式并更改为禁用的组框绘制文本的方式。阅读有关QStyle 以及如何创建自定义样式here 的更多信息。该链接适用于 Qt 5.1,但原理与 Qt 4 相同。
更简单的方法是更改QGroupBox 对象的调色板。将颜色组QPalette::Disabled 和颜色角色QPalette::Light 标识的颜色更改为alpha 通道设置为0 的任何颜色,例如QColor(0, 0, 0, 0)。这将有效地禁用文本阴影。但是,它也会禁用线条的阴影,因此可能不是您想要的。
【讨论】:
我找到了解决办法:
很遗憾,您无法移除禁用的文本阴影(也称为蚀刻),但您可以使用肮脏的解决方法更改其颜色:
看起来阴影效果总是从当前调色板的 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);
【讨论】: