Reputation: 1305
Upon my qt5 application's initialization, the QApplication instance is provided with a custom style class that inherits from QProxyStyle.
This class overwrites the void polish(QPalette &palette)
function in order to change the general color scheme for the application.
For example:
#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...
}
However, I wish to allow users to customize the color scheme of the application. Once the user has selected new colors, I need someway to "reapply" the style, so the function can run again and obtain the new colors from the hypothetical "color manager" class.
How would this be done?
Upvotes: 2
Views: 470
Reputation: 12791
Instead you can call below static function and apply the desired palette.
void QApplication::setPalette(const QPalette &palette, const char *className = nullptr);
Create the new palette object after selecting the new color scheme and just pass it to above function. You can specify classname, if you want the change to apply for a specific widget.
Upvotes: 1