将自定义颜色的按钮设置为禁用样式

2024-01-06

我有一个继承的类QWidget。在某些情况下,我希望将其设置为禁用。

该小部件有一些颜色按钮,它们是从颜色列表中设置的:

void MyWidget::colorUpdate(QString color)
{
    if(!color.isEmpty())
    {
        QString foreground = (QColor(color).lightness() < 125 ? "white" : "black");
        m_colorButton->setStyleSheet("color: " + foreground + "; background-color: " + color);
    }
}

Calling myWidget.setEnabled(enabledOption);禁用小部件,使小部件中的所有文本和所有其他项目变灰 - 除了这些颜色按钮。

所以我正在考虑采取自己的行动:

void MyWidget::setWidgetEnabled(bool enabled)
{
    this->setEnabled(enabled);
    // what else ?
}

我怎样才能使我的按钮 - 背景颜色和文本颜色我不知道,但按钮知道 - 具有“禁用外观”?

(注意 - 颜色更新也适用于禁用的项目 - 这并不是很复杂 - 我在设置小部件禁用时应用的任何样式表都可以应用在colorUpdate功能)。

我只是不知道如何应用带有灰色阴影的样式表 - 或者甚至可能在样式表中有一个“禁用”选项......
“禁用”中的颜色是什么样的?


为禁用状态设置您自己的样式。 您可以设置一个特殊的禁用状态的样式 http://doc.qt.io/qt-5/stylesheet-reference.html#list-of-pseudo-states在样式表中:

m_colorButton->setStyleSheet(":enabled { color: " + foreground 
                             + "; background-color: " + color 
                             + " } :disabled { color: " + disabledForeground 
                             + "; background-color: " + disabledColor + " }");

编辑:更改了小部件的代码而不是全局样式表。


保持默认禁用样式。您只能为启用状态设置自定义样式,然后当小部件被禁用时,样式不适用:

m_colorButton->setStyleSheet(":enabled { color: " + foreground 
                             + "; background-color: " + color + "}");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将自定义颜色的按钮设置为禁用样式 的相关文章

随机推荐