我想在QWidget的自定义子类中更改背景颜色。
这是代码:

WorldView::WorldView(QWidget *parent) : QWidget(parent)
{
    QPalette p(palette());
    p.setColor(QPalette::Background, Qt::black);
    setAutoFillBackground(true);
    setPalette(p);
}

但是它没有按预期工作。背景颜色保持不变。

我不知道为什么

最佳答案

正如您可以在documentation中阅读的那样,QPalette::Background已过时。请改用QPalette::Window。请注意,某些小部件在后台使用其他角色。见QPalette::ColorRole documentation

也:



在这种情况下,我建议使用样式表。参见Qt Style Sheets Reference

但是,如果WorldView是一个自定义小部件,则使用自定义paintEvent,由您来绘制背景

10-08 04:10