簡體   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