删除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