在widget构造函数中:
setAutoFillBackground(true)
当前部件的自动填充要打开, 否则可能显示不出背景图.- 获取调色板->更改调色板->设置调色板
this->setAutoFillBackground(true);
QPalette palette = this->palette();
palette.setBrush(QPalette::Window,
QBrush(QPixmap(":/res/backgroud.png").scaled(
this->size(),Qt::IgnoreAspectRatio,
Qt::SmoothTransformation)));
this->setPalette(palette);
利用QPalette:
- 常利用
QPalette
调色板来设置各个部件的背景颜色或背景图 - 设置背景颜色直接调用提供的
setColor
接口 - 设置背景图则使用笔刷
setBrush
来填充
setAutoFillBackground(true);
QPalette palette;
QPixmap pixmap(":/img/1.bmp");
palette.setBrush(QPalette::Window,QBrush(pixmap));
palette.setBrush(QPalette::Background, QBrush(QPixmap(":/img/1.bmp")));
palette.setColor(QPalette::Background, QColor(192,253,123));
setPalette(palette);
利用QPalette的drawPixmap()
- 这种方法因为使用了
painter
所以只能用在paintEvent()
函数中 - 因为
Qpainter
只能在绘图事件中使用才能生效
QPixmap pixmap(":/new/prefix1/image/1.bmp");
painter.drawPixmap(pixmap.rect(),pixmap);