将自定义颜色的按钮设置为禁用样式
Set a button of custom color to a disabled style
我有一个 class 继承了 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);
}
}
调用 myWidget.setEnabled(enabledOption);
会禁用小部件,将小部件中的所有文本和所有其他项目变灰 - 除了这些颜色按钮。
所以我想自己动手:
void MyWidget::setWidgetEnabled(bool enabled)
{
this->setEnabled(enabled);
// what else ?
}
我怎样才能让我的按钮 - 背景颜色和文本颜色我不知道,但按钮确实如此 - "disabled look"?
(注意 - 颜色更新也适用于禁用的项目 - 虽然这并不复杂 - 我在设置小部件禁用时应用的任何样式 sheet 都可以应用于 colorUpdate
函数)。
我只是不知道如何应用具有该灰色阴影的样式sheet - 或者可能在样式中有一个 "disabled" 选项sheet 甚至...
"disabled" 中的颜色是什么样的?
为禁用状态设置自己的样式。
您可以在样式表中设置一个特殊的 style for disabled state :
m_colorButton->setStyleSheet(":enabled { color: " + foreground
+ "; background-color: " + color
+ " } :disabled { color: " + disabledForeground
+ "; background-color: " + disabledColor + " }");
编辑:更改了小部件的代码而不是全局样式表。
保持默认禁用样式。您可以仅为启用状态设置自定义样式,然后当小部件被禁用时,该样式不适用:
m_colorButton->setStyleSheet(":enabled { color: " + foreground
+ "; background-color: " + color + "}");
我有一个 class 继承了 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);
}
}
调用 myWidget.setEnabled(enabledOption);
会禁用小部件,将小部件中的所有文本和所有其他项目变灰 - 除了这些颜色按钮。
所以我想自己动手:
void MyWidget::setWidgetEnabled(bool enabled)
{
this->setEnabled(enabled);
// what else ?
}
我怎样才能让我的按钮 - 背景颜色和文本颜色我不知道,但按钮确实如此 - "disabled look"?
(注意 - 颜色更新也适用于禁用的项目 - 虽然这并不复杂 - 我在设置小部件禁用时应用的任何样式 sheet 都可以应用于 colorUpdate
函数)。
我只是不知道如何应用具有该灰色阴影的样式sheet - 或者可能在样式中有一个 "disabled" 选项sheet 甚至...
"disabled" 中的颜色是什么样的?
为禁用状态设置自己的样式。 您可以在样式表中设置一个特殊的 style for disabled state :
m_colorButton->setStyleSheet(":enabled { color: " + foreground
+ "; background-color: " + color
+ " } :disabled { color: " + disabledForeground
+ "; background-color: " + disabledColor + " }");
编辑:更改了小部件的代码而不是全局样式表。
保持默认禁用样式。您可以仅为启用状态设置自定义样式,然后当小部件被禁用时,该样式不适用:
m_colorButton->setStyleSheet(":enabled { color: " + foreground
+ "; background-color: " + color + "}");