Как «повторно полировать» QПрименение с таким же стилем?

После инициализации моего приложения qt5 экземпляр QApplication предоставляется с классом пользовательского стиля, который наследуется от QProxyStyle.

Этот класс перезаписывает void polish(QPalette &palette) Функция для изменения общей цветовой схемы для приложения.

Например:

#include "mycolormanager.h"
void MyStyle::polish(QPalette &palette) {
palette.setBrush(QPalette::Window, MyColorManager::getWindowColor());
palette.setColor(QPalette::WindowText, MyColorManager::getTextColor());
palette.setColor(QPalette::Disabled, QPalette::WindowText, MyColorManager::getDisabledTextColor());
palette.setColor(QPalette::Base, MyColorManager::getBaseColor());
// etc...
}

Однако я хочу разрешить пользователям настраивать цветовую схему приложения. После того, как пользователь выбрал новые цвета, мне нужно как-то «повторно» применить стиль, чтобы функция могла снова запуститься и получить новые цвета из гипотетического класса «менеджер цвета».

Как это будет сделано?

2

Решение

Вместо этого вы можете вызвать ниже статическую функцию и применить желаемую палитру.

void QApplication::setPalette(const QPalette &palette, const char *className = nullptr);

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]