Установить кнопку нестандартного цвета на отключенный стиль
У меня есть класс, который наследует 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 ?
}
Как сделать так, чтобы мои кнопки - цвета фона и текста, которые я не знаю, но кнопка имеет - имеют такой "отключенный вид"?
(Обратите внимание - обновление цвета работает и для отключенных элементов - хотя это и не сложно - все таблицы стилей, которые я применяю при отключении виджета, могут быть применены в colorUpdate
функция).
Я просто не знаю, как применить таблицу стилей с этим серым оттенком - или, возможно, даже иметь параметр "отключен" в таблице стилей...
Как цвета выглядят в "отключен"?
1 ответ
Чтобы установить свой собственный стиль для состояния отключения. Вы можете установить специальный стиль для отключенного состояния в таблице стилей:
m_colorButton->setStyleSheet(":enabled { color: " + foreground
+ "; background-color: " + color
+ " } :disabled { color: " + disabledForeground
+ "; background-color: " + disabledColor + " }");
изменить: изменил код для виджета вместо глобальной таблицы стилей.
Чтобы сохранить стиль по умолчанию отключен. Вы можете установить свой собственный стиль только для включенного состояния, тогда, когда виджет отключен, стиль не применяется:
m_colorButton->setStyleSheet(":enabled { color: " + foreground
+ "; background-color: " + color + "}");