1、不考虑渐变 使用Qwidget 实现
ui->setupUi(this);
//第一钟方法 普通设置
QWidget* m_pWidget = new QWidget(this);
m_pWidget->setGeometry(0, 0, 800, 360);//x y w h
QPalette pal(m_pWidget->palette());
//设置背景黑色
pal.setColor(QPalette::Background, Qt::black);
m_pWidget->setAutoFillBackground(true);
m_pWidget->setPalette(pal);
m_pWidget->show();
//第二种方法 样式设置
QWidget* e_pWidget = new QWidget(this);
e_pWidget->setGeometry(0, 360, 800, 120);//获取父类的相抵窗口大小进行设置
e_pWidget->setStyleSheet("background-color:blue;");
e_pWidget->show();
//布件覆盖
QPushButton* btn =new QPushButton(this);
btn->setGeometry(0,90,200,100);
效果如下
2、需要考虑渐变 使用画图实现
QLinearGradient linearGradient(QPointF(0, 0), QPointF(0, rect().width()/2));//开始点和结束点x y
//插入颜色
linearGradient.setColorAt(0, Qt::blue);
linearGradient.setColorAt(1, Qt::white);
//指定渐变区域以外的区域的扩散方式
linearGradient.setSpread(QGradient::RepeatSpread);//PadSpread、ReflectSpread、RepeatSpread
//使用渐变作为画刷
QPainter painter(this);
painter.setBrush(linearGradient);
painter.drawRect(0, 0, rect().width(), rect().height()*3/3);