mainwindow以及dialog只需要在样式表中设置背景色或者背景图片即可。需要注意的是用样式表设置background-image和border-image的区别,前者只显示原图片大小,后者根据窗体大小自适应拉伸。
对于widget设置背景色的方法如下:
widget.cpp
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// setStyleSheet("border-image: url(:/images/bgFull.png);");
}
Widget::~Widget()
{
delete ui;
}
//方法三:调色板,但是此种方式需要配合resizeevent使得图片不断拉伸适应
void Widget::setBackgroundColor()
{
//方法三:调色板
QPalette palette;
//画单色
// palette.setColor(QPalette::Background, QColor(0x00,0x00,0xff));
//画图片
QBrush brush;
brush.setTexture(QPixmap(":/images/bgFull.png").scaled(size()));
palette.setBrush(QPalette::Background, brush);//recommended
// //画图片
// palette.setBrush(backgroundRole(), \
// QBrush(QPixmap(":/images/bgFull.png").scaled(size(),
// Qt::IgnoreAspectRatio,
// Qt::SmoothTransformation)));//ok, but no fluent
setPalette(palette);
}
void Widget::paintEvent(QPaintEvent * event)
{
// //方法一:如果用样式表添加背景图片的话,配合以下几行代码
// QStyleOption option;
// option.init(this);
// QPainter painter(this);
// style()->drawPrimitive(QStyle::PE_Widget, &option, &painter, this);
// QWidget::paintEvent(event);
//方法二:recommended
QPainter painter(this);
painter.drawPixmap(rect(), QPixmap(":/images/bgFull.png").scaled(size()));
}
void Widget::resizeEvent(QResizeEvent *)
{
// setBackgroundColor();
}