C++ Qt使用调色板更改QWidget的背景色不会';行不通
我想更改QWidget的自定义子类中的背景色。 代码如下:C++ Qt使用调色板更改QWidget的背景色不会';行不通,c++,qt,C++,Qt,我想更改QWidget的自定义子类中的背景色。 代码如下: WorldView::WorldView(QWidget *parent) : QWidget(parent) { QPalette p(palette()); p.setColor(QPalette::Background, Qt::black); setAutoFillBackground(true); setPalette(p); } 但它并没有像预期的那样起作用。背景色保持不变 我不知道为什么。
WorldView::WorldView(QWidget *parent) : QWidget(parent)
{
QPalette p(palette());
p.setColor(QPalette::Background, Qt::black);
setAutoFillBackground(true);
setPalette(p);
}
但它并没有像预期的那样起作用。背景色保持不变
我不知道为什么。正如您在中看到的,qpalete::Background
已经过时了。改用qpalete::Window
。注意,一些小部件使用其他角色作为后台。见
此外:
警告:某些样式不会对所有图形使用选项板,例如
例如,如果他们使用本机主题引擎。情况就是这样
适用于Windows XP、Windows Vista和OS X样式
在这种情况下,我建议使用样式表。看
但是,如果WorldView是一个自定义小部件,您可以使用自定义的
paintEvent
,您可以使用qpalete::Base
而不是qpalete::background
setStyleSheet('background-color:black;')
QPalette p(palette());
p.setColor(QPalette::Base, Qt::lightGray);
setPalette(p);
出于某种原因,自定义小部件使用
qpalete::Base
填充背景色如果调色板颜色不起作用,则有四个原因需要检查
- 你已经从样式表中设置了颜色,我根本不推荐,或者你已经设置了父样式表
- 您在调色板中的颜色角色不匹配
- 确保为小部件设置了调色板,我不建议为每个小部件设置调色板,除非您真的想,否则您应该为您的应用程序设置调色板
- 或者您的窗口管理器正在强制颜色和调色板根本不起作用
这就是我的想法,如果你知道更多,请编辑此Answare并将其添加到项目中我已尝试将
背景
更改为窗口
,但仍然不起作用。(正如文档所说,背景
被定义为窗口
)问题可能出在另一个地方。还是谢谢。也许你必须将autoFillBackground
设置为true(QWidget::setAutoFillBackground(bool)
)