在窗口程序中,当我们改变窗口大小的时候,背景图片通常会岁窗口大小变化而缩放
然而,在我们写的窗口程序中,设置背景图片后,如果缩放大小,会看到背景图片并不会随之缩放,
应为这需要特殊处理,一般常用的方法就是 改变设为背景图片的 pixmap 的大小,在发生resize事件的时候,
将改变完大小的pixmap重新设置为有新size窗口的背景图片
主要的实现代码如下
1 //设置背景图片 2 void Widget::setBackgroundImage(QPixmap&pixmap) 3 { 4 //判断图片是否为空 5 if(pixmap.isNull()){ 6 qDebug() << tr("illege arguments") <<endl; 7 return; 8 } 9 //设置窗口的背景 10 QPalette palette = this->palette(); 11 palette.setBrush(this->backgroundRole(), 12 QBrush(pixmap.scaled(this->size(), 13 Qt::IgnoreAspectRatio, 14 Qt::SmoothTransformation))); 15 this->setPalette(palette); 16 } 17 18 //重载resizeEvent 19 void Widget::resizeEvent(QResizeEvent *) 20 { 21 setBackgroundImage(m_backPixmap); 22 }
值得注意的是 , 要使窗口的背景图片显示出来的时候 , widget 的 autoFillBackground 属性一定要为 true,
(调用 setAutoFillBackground(true) 就ok 了)