在我的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...
}
但是,我希望允许用户自定义应用程序的配色方案。一旦用户选择了新颜色,我就需要“重新应用”样式,因此该功能可以再次运行并从假设的“颜色管理器”类中获取新颜色。
如何做到这一点?
答案 0 :(得分:1)
相反,您可以在静态函数下面调用并应用所需的调色板。
void QApplication::setPalette(const QPalette &palette, const char *className = nullptr);
选择新颜色方案后创建新的调色板对象,然后将其传递给上面的函数。如果希望更改应用于特定小部件,则可以指定classname。