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

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

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

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


person Sneezeface    schedule 27.09.2017    source источник
comment
Qt генерирует специальный экземпляр QProxyStyle на основе вашего QSS. Отменить это невозможно.   -  person Dmitry Sazonov    schedule 28.09.2017


Ответы (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);
person Petr    schedule 27.09.2017