2012-01-30 88 views
7

在我的應用程序中,整個應用程序的樣式表取自加載到應用程序中的資源文件。更新小部件的ObjectName並不會自動更新樣式

我有一個QListWidget定義有兩個樣式表:

QListWidget#Good{ 
..some color properties 
} 

QListWidget#Bad { 
..soem different color properties 
} 

在一個形式,我QListWidget的對象名稱是「好」,所以堅持到#good風格。在運行時期間,我有一種情況,我想將「SetObjectName」設置爲「Bad」,並在UI中立即更改樣式。

我注意到兩兩件事:

  1. 只是調用 「SetObjectName(」 壞 「);」 doens't從方法改變風格...
  2. 唯一的時間「SetObjectName(」壞「);」如果從包含QListWidget的Widget的構造函數調用它,

顯然我錯過了一些「更新風格」階段。請注意,我不能在代碼中使用「setStyleSheet」,它必須來自QSS文件。

我錯過了什麼?

回答

9

得到了解決。呼喚:

style()->unpolish(theWidget); 
style()->polish(theWidget); 

在我的小部件對象名的變更後(setObjectName)的伎倆。