Как получить цвет фона QWidget после установки QStyleSheet

У меня есть настольный QApplication (Qt 5.9), на котором я успешно установил стиль, используя таблицу стилей. Во время выполнения каждый QWidget выглядит правильно, как задумано.
Что мне нужно знать, так это цвет фона определенного стилизованного виджета, скажем, QTooltip.

Я попробовал метод QWidget::palette, но то, что я получил, выглядело как системный цвет по умолчанию для QPalette::ColorRole, который я спросил.
Более того, qt docs рекомендует не использовать этот метод при использовании таблиц стилей.

Итак... в общем, как можно запросить свойство виджета, определенного с помощью таблиц стилей?

1 ответ

Решение

Вы не можете напрямую получить доступ к отдельным свойствам таблицы стилей. Что вы можете сделать, это получить таблицу стилей, а затем вам нужно будет проанализировать ее и найти свойство, которое вы ищете (some_widget->styleSheet() вернул бы его как QString).

Если вы не хотите этого делать и хотите получить прямой доступ к палитре, вы должны использовать ее вместо таблицы стилей для изменения цвета.

Пример кода, как вы можете стилизовать свой код, используя палитру вместо таблицы стилей:

QPalette px;
px.setColor(QPalette::Text, QColor(255, 255, 255)); // Set text color to white
px.setColor(QPalette::Base, QColor(0, 0, 0)); // Set background to black
some_widget->setPalette(px);
Другие вопросы по тегам