我想更改 QWidget 的自定义子类中的背景颜色。这是代码:
WorldView::WorldView(QWidget *parent) : QWidget(parent)
{
QPalette p(palette());
p.setColor(QPalette::Background, Qt::black);
setAutoFillBackground(true);
setPalette(p);
}
Run Code Online (Sandbox Code Playgroud)
但它并没有按预期工作。背景颜色保持不变。
我不知道为什么。
正如您在文档中所读到的,QPalette::Background
已经过时了。QPalette::Window
代替使用。请注意,某些小部件使用其他一些角色作为背景。请参阅QPalette::ColorRole 文档
还:
警告:某些样式不会将调色板用于所有绘图,例如,如果它们使用本机主题引擎。Windows XP、Windows Vista 和 OS X 风格都是这种情况。
在这种情况下,我建议使用样式表。请参阅Qt 样式表参考
但是,如果 WorldView 是自定义小部件,则使用您的自定义paintEvent
,由您来绘制背景