Qt5:隨窗口大小變化背景圖片自動縮放的實現


在窗口程序中,當我們改變窗口大小的時候,背景圖片通常會歲窗口大小變化而縮放

然而,在我們寫的窗口程序中,設置背景圖片后,如果縮放大小,會看到背景圖片並不會隨之縮放,

應為這需要特殊處理,一般常用的方法就是 改變設為背景圖片的 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 了)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM