我有大约40个按钮,也是指标(开或关),每一次我刷新这些指标的颜色取决于状态。我通过更改样式表来做到这一点。这样做是否已经结束了?如果是这样,我应该只在指标改变状态时设置新的样式表,还是应该使用QBrush之类的东西?是否以动态的方式使用styleSheets增加了大量的计算
回答
是的。我发现在Linux上使用Qt 4.6.2时,设置样式表以更改QLabel上文本的颜色非常缓慢。
动态样式表看起来像一个很好的解决方案,但对我而言,必要的setStyle()
与setStyleSheet()
一样昂贵!
多次试验后,我发现这种替代是一样快,而且通常一样快50倍以上,至少两次:
QPalette palette = lbl->palette();
palette.setColor(QPalette::WindowText, Qt::gray);
lbl->setPalette(palette);
根据您的(静态)样式表是如何设置的,你” d必须用QPalette::Window
或QPalette::Button
代替QPalette::WindowText
。有关详细信息,请参见QPalette documentation。
这是一个很酷的概念。不幸的是,他们明确提到它仅用于“演示目的”,并且“不能用于生产”(尽管我确实使用它:) – 2017-07-15 07:27:17
凹凸。没有不尊重以前的答案:) – 2017-07-15 07:32:58
@yanbellavance,你有一个链接,他们提到它是'仅用于演示目的'和'不应该用于生产? – 2017-07-17 06:23:20
不要动态设置完整的样式表。相反,使用在应用程序启动时解析一次的动态样式表定义应用程序范围的样式表。然后,在样式表,定义为在documentation详细的动态特性的样式表:
在有些情况下,我们需要提出的是具有强制性的字段的表格很多情况下。为了向用户表明该字段是强制性的,一个有效的(尽管美观可疑)解决方案是使用黄色作为这些字段的背景颜色。事实证明,使用Qt样式表很容易实现。首先,我们可以使用下面的应用程序范围内的样式表:
*[mandatoryField="true"] { background-color: yellow }
在你的情况,你也许可以做这样的事情:
QPushButton[state="on"] {
background-color: green;
}
QPushButton[state="off"] {
background-color: red;
}
然后更新按钮“国家”属性:
pushButton->setProperty("state", "on");
pushButton->setStyle(QApplication::style());
不幸的是,Qt的4.6则需要通过重置控件的样式,因此,0123给力的样式表的重新计算致电。
以这种方式使用动态样式表非常快。我正在研究大量使用动态样式表属性并且没有注意到任何性能降级的应用程序。
感谢您的好评。所以从Qt 4.6我将不得不调用pushButton-> setStyle(QApplication :: style());每次我改变属性来影响样式?我现在将它放在我的代码中以避免将来出现问题。 – 2009-12-11 17:38:48
你是否确定这将是Qt 4.6的情况? – 2009-12-11 18:29:19
我没有设法让动态行为在不重置样式的情况下工作。另请参阅此问题:http:// stackoverflow。com/questions/1595476/are-qts-stylesheets-really-handling-dynamic-properties/1849127#1849127 您是否设法在不重置小部件样式的情况下获得动态行为?我在Linux下使用Qt,不知道这是否有任何区别。 – 2009-12-11 19:01:58
根据我的经验,样式表会消耗太多资源,如果可以的话,最好避免它们。
什么太多? – 2013-06-10 13:24:15
刷新率是每秒一次,我的应用程序正在运行的四核心PC是如此平稳,它运行在0%:) – 2017-07-15 07:29:43
- 1. LoadRunner的 - 是否可以动态增加用户的各种脚本的数量
- 2. 动态增加数(计算单元)
- 3. 是否可以使用动态运算符创建动态算术表达式?
- 4. 使用最大内存效率的增量中值计算
- 5. AngularJS计算大括号中的变量的动态数量
- 6. 动态增加计数器
- 7. 以编程方式增加音量
- 8. HTA:使用Javascript计算器 - 增加新的变量
- 9. 如何计算Oracle 11g中存储使用量的增加?
- 10. 是否可以将字体动态加载到用户计算机中
- 11. 在umbraco中使用listview/datagrid大量增加了加载时间
- 12. 我是否以正确的方式使用了cython?
- 13. 是否可以使用Chromium浏览器计算网站流量大小?
- 14. 使用java计算增量平均值
- 15. SharedPreferences XML文件是否增加了它的大小?
- 16. 在Asp.Net中以编程方式添加StyleSheets
- 17. 动态增加textview的大小
- 18. JMeter的,使用动态增加的值
- 19. TensorFlow:是否适合以相当于拟合1大增量的小步增量?
- 20. 静态成员函数是否增加了类的开销?
- 21. 使用AJAX是否会增加PHP的内存使用量?
- 22. 使用动态值计算
- 23. 我是否以正确的方式使用静态?
- 24. 动态行为增加了使用装饰模式的唯一好处吗?
- 25. 计算与大量的加数
- 26. jquery计算动态方程
- 27. 我是否以错误的方式使用Symfony Flash变量?
- 28. 是否可以使用Flex旋转动态添加的行?
- 29. 修改乘法计算以使用增量时间
- 30. Rmarkdown滑动增加公式的大小
如果您使用O/S性能监视器(Windows上的'perfmon.exe')来测量CPU计算量,它会不会回答您的问题? – ChrisW 2009-12-10 19:20:29