设置控件颜色
一、使用QPalette设置颜色
QPalette pale;
pale.setColor(QPalette::Background,Qt::black); // 将背景色设置为black
this->setPalette(pale);

有些人设置背景色时这样设置:
QPalette palette(this->palette());
palette.setColor(QPalette::Background, Qt::black);
this->setPalette(palette);
在``setPalette之前和之后分别调用一次palette()`调试如下:
QPalette pale;
qDebug()<<this->palette();
pale.setColor(QPalette::Background,Qt::black);
this->setPalette(pale);
qDebug()<<this->palette();
输出结果如下:
QPalette(resolve=0x0,)
QPalette(resolve=0x400,,Window:[Active:0xff000000,Disabled:0xff000000,Inactive:0xff000000])
可以看到,这样做完全没有必要。
看起来pale是栈对象,在退出构造函数时会被析构,但是经过测试,并不是这样的,Qt会自动保存它,你不用担心它的生存周期。
二、使用QSS设置背景色
this->setStyleSheet(R"(
BackColor{
background-color:black;
}
)");
其中,BackColor是你的类名。

由于子控件会继承父控件的QSS,因此,并不建议使用QSS设置背景色。