我有大約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