一般设置背景颜色可以采用调色板进行调色
QPalette pal(this->palette());
pal.setColor(QPalette::Background, QColor("#F5F5F5")); //设置背景黑色
this->setAutoFillBackground(true);
this->setPalette(pal);
这种方式在QMainWindow下没有任何问题!子类化QWidget并重载paintEvent(QPaintEvent)事件 也能完好运行。
这边在介绍2种设置背景色方法:
1、继承paintEvent 事件利用QPainter填充矩形的背景色
void OperatePanel::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
//p.setBackground(QBrush(QColor(255,255,255)));
p.fillRect(this->rect().x(),this->rect().y(),this->rect().width(),this->rect().height(),QBrush(m_backgroundColor));
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
2、 重载paintEvent(QPaintEvent*) 接着可直接使用样式,不过这样子的qss代码会连同子部件都设置此颜色,如下图:
void OperatePanel::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
this->setStyleSheet("QWidget{background-color: yellow}");