首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt样式表管理和性能

Qt样式表管理和性能
EN

Stack Overflow用户
提问于 2014-12-03 13:04:46
回答 1查看 1.6K关注 0票数 0

我对Qt样式表的管理有一个问题。

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

为了减少延迟,我尝试使用unpolish(QApplication * application)QStyle::polish(QApplication * application)。性能令人印象深刻(不到1秒),但是一些Widget属性没有被更新,例如QToolButton的图标属性。此外,我所有的定制小部件都不会被更新,即使它们是从常见的小部件类(QFrameQwidgetQStackedWidget等)继承的。我是不是错过了polish方法的一些东西?还有其他方法可以更好地更新我的应用程序的样式吗?

EN

回答 1

Stack Overflow用户

发布于 2014-12-03 16:06:43

您可以使用setPalette( QPalette )

代码语言:javascript
复制
void QApplication::setPalette ( const QPalette & palette, const char * className = 0 ) [static]

将默认应用程序调色板更改为调色板。 调色板可以根据QStyle::polish()中当前的GUI样式进行更改。 警告:不要将此函数与Qt样式表结合使用。当使用样式表时,小部件的调色板可以使用“颜色”、“背景色”、“选择颜色”、“选择背景色”和“备用背景色”进行定制。 注意:有些样式并不是所有绘图都使用调色板,例如,如果它们使用了本机主题引擎。

如果您想从一个地方更改所有小部件的主题,这是一个好方法。

我在大型应用程序中使用了这个,而且效果很好。

但是,如果您将styleSheet或调色板设置为一个小部件,它将不会得到您的主题。

代码语言:javascript
复制
QPalette myPalette;
myPalette.setColor(QPalette::Background, Qt::red);
myPalette.setColor(QPalette::WindowText, QColor(150, 150, 150));
qApp->setPalette(myPalette);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27272493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档