在窗口程序中,當我們改變窗口大小的時候,背景圖片通常會歲窗口大小變化而縮放
然而,在我們寫的窗口程序中,設置背景圖片后,如果縮放大小,會看到背景圖片並不會隨之縮放,
應為這需要特殊處理,一般常用的方法就是 改變設為背景圖片的 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 了)