繁体   English   中英

Qt样式表管理和性能

[英]Qt Stylesheet management and performances

我对Qt样式表的管理有疑问。

我有一个很大的Qt应用程序,可以动态更改其颜色主题。 为此,我创建了多个样式表(一个主题表-它们很大)。 当用户想要更改颜色主题时,他单击一个按钮,该按钮调用MainWindowQWidget方法setStylesheet(QString) 这实际上有效,但是我的GUI在此过程中冻结了8-10秒。

为了减少延迟,我尝试使用unpolish(QApplication * application)QStyle::polish(QApplication * application) 性能相当出色(不到一秒钟),但是一些Widget属性没有更新,例如QToolButton的icon属性。 而且,即使我的所有自定义窗口小部件都继承自常见的窗口小部件类( QFrameQwidgetQStackedWidget等),也不会更新。 我会用polish法错过什么吗? 还有另一种方法可以更好地更新我的应用程序样式吗?

您可以使用setPaletteQPalette

void QApplication::setPalette ( const QPalette & palette, const char * className = 0 ) [static]

将默认应用程序调色板更改为调色板。

可以根据QStyle :: polish()中的当前GUI样式更改调色板。

警告:请勿将此功能与Qt样式表一起使用。 使用样式表时,可以使用“颜色”,“背景颜色”,“选择颜色”,“选择背景颜色”和“替代背景颜色”来自定义窗口小部件的调色板。

注意:例如,某些样式如果使用本机主题引擎,则不会对所有图形使用调色板。

如果要从一个位置更改所有小部件的主题,这是一种好方法。
我在大型应用程序中使用了它,并且运行良好。

但是,如果您将styleSheet或选用板设置为窗口小部件,则不会获得一般主题。

QPalette myPalette;
myPalette.setColor(QPalette::Background, Qt::red);
myPalette.setColor(QPalette::WindowText, QColor(150, 150, 150));
qApp->setPalette(myPalette);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM