在我的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...
}

但是,我希望允许用户自定义应用程序的配色方案。一旦用户选择了新的颜色,我就需要某种方式来“重新应用”样式,以便该函数可以再次运行并从假设的“颜色管理器”类中获取新的颜色。

怎么做?

最佳答案

相反,您可以在静态函数下方调用并应用所需的调色板。

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

选择新的配色方案后,创建新的调色板对象,并将其传递给上述功能。如果您希望更改适用于特定的小部件,则可以指定类名。

08-16 00:04