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

Tha*_*lia 1 qt stylesheet qcolor

我有一个继承的类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);
    }
}
Run Code Online (Sandbox Code Playgroud)

调用myWidget.setEnabled(enabledOption);禁用窗口小部件,灰显窗口小部件中的所有文本和所有其他项 - 除了这些颜色按钮.

所以我想做自己的行动:

void MyWidget::setWidgetEnabled(bool enabled)
{
    this->setEnabled(enabled);
    // what else ?
}
Run Code Online (Sandbox Code Playgroud)

如何制作我的按钮 - 我不知道的背景颜色和文字颜色,但按钮确实 - 具有"禁用外观"?

(注意 - 颜色更新也适用于禁用的项目 - 但这并不是很复杂 - 无论我在设置小部件禁用时应用的样式表都可以在colorUpdate函数中应用).

我只是不知道如何应用具有灰色阴影的样式表 - 或者样式表中可能还有"禁用"选项..."禁用"中的
颜色是什么样的?

ymo*_*eau 5

为禁用状态设置自己的样式.您可以在样式表中为禁用状态设置特殊样式:

m_colorButton->setStyleSheet(":enabled { color: " + foreground 
                             + "; background-color: " + color 
                             + " } :disabled { color: " + disabledForeground 
                             + "; background-color: " + disabledColor + " }");
Run Code Online (Sandbox Code Playgroud)

编辑:更改窗口小部件的代码而不是全局样式表.


保持默认的禁用样式.您可以仅为启用状态设置自定义样式,然后在禁用窗口小部件时,样式不适用:

m_colorButton->setStyleSheet(":enabled { color: " + foreground 
                             + "; background-color: " + color + "}");
Run Code Online (Sandbox Code Playgroud)