刪除QPalette根據Qt's QWidget documentation:如何從一個QWidget
QWidget的傳播明確的調色板角色從父到子。如果您爲調色板上的特定角色分配畫筆或顏色並將該調色板分配給小部件,則該角色將傳播至所有小部件的子項,覆蓋該角色的任何系統默認值。
我有一個小部件層次:
QMainWindow 'window'
|_QGroupBox 'box'
|_QLabel 'label'
|_QLabel 'label2'
所以,如果我是叫box->setPalette(somePalette)
新的調色板用於繪製box
,label
和label2
現在我想撤消此,即我想用box
,label
和label2
來使用我的默認調色板,這很簡單,我打電話box->setPalette(window->palette())
對不對?
的問題與此是box
技術上仍具有自定義調色板集(它使你通過它的調色板的深層副本),如果我修改的window
調色板不再通過box
傳播到label
和label2
。
那麼,我該如何從box
中實際刪除調色板,以便恢復調色板傳播?
該文檔說'使頂層窗口繼承其父級的字體和調色板。「盒子」不是頂級窗口... – Troyseph
找到一個WA_SetPalette小部件屬性,試着嘗試該小部件有自己的調色板。) – Troyseph
我可以確認'WA_SetPalette'必須設置爲false,但只有在設置調色板完全匹配父級的調色板後。 '箱 - >調用SetPalette(窗口 - >調色板()); box-> setAttribute(WA_SetPalette,false);'不需要更新'! – Troyseph