日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt 设置窗口背景图片的几种方法

發(fā)布時(shí)間:2025/3/21 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 设置窗口背景图片的几种方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.在paintEvent事件中繪制圖片

void Widget::paintEvent(QPaintEvent * ev) {QPainter painter(this);painter.drawPixmap(rect(),QPixmap(":/bg.jpg"),QRect()); }

drawPixmap在Widget的整個(gè)矩形區(qū)域繪制背景圖片,第三個(gè)參數(shù)為要繪制的圖片區(qū)域,傳入空的矩形表示整個(gè)圖片區(qū)域。通過這種方式可以將圖片平鋪到窗口上,缺點(diǎn)就是要使用paintEvent事件需要新建一個(gè)類,不適合子窗口。


2.使用調(diào)色板QPalette來設(shè)置圖片

QPalette pal =this->palette(); pal.setBrush(QPalette::Background,QBrush(QPixmap(":/bg.jpg"))); setPalette(pal);

首先獲得Widget的調(diào)色板,然后設(shè)置設(shè)置調(diào)色板背景(setBrush),最后將調(diào)色板設(shè)置到Widget中。


3. 使用樣式表(setStyleSheet)

使用樣式表可以很方便設(shè)置界面,而且非常高效,還能讓界面和邏輯分離。真的是Qt里非常好用的一個(gè)東西,設(shè)置背景圖片的語句也很簡單.

setStyleSheet("border-image:url(:/bg.jpg)");

一句話就搞定了,這里使用border-image屬性可以讓圖片平鋪到窗口,效果與第二點(diǎn)一樣。不過在本例中由于Widget是頂層窗口,所以直接設(shè)置樣式表也不會(huì)顯示。所以樣式表比較適合子窗口來使用。

注意這三者的使用:


4.使用間接的方式來設(shè)置背景

比如說在窗口上覆蓋一個(gè)QLabel,這個(gè)label始終與窗口一樣大。然后在label中設(shè)置圖片,視覺效果上和直接給窗口設(shè)置背景圖片一樣。

Widget::Widget(QWidget *parent) :QWidget(parent) {m_lblBg = new QLabel(this);m_lblBg ->setPixmap(QPixmap(":/bg.jpg"));m_lblBg ->setScaledContents(true); } void Widget::resizeEvent(QResizeEvent * ev) {m_lblBg->resize(this->size()); }

創(chuàng)建一個(gè)label作為Widget的子窗口,然后設(shè)置圖片。通過在Widget的resizeEvent事件中設(shè)置label的大小與Widget一致。這里需要注意調(diào)用QLabel的setScaledContents(true),否則效果和第一種一樣。由于QLabel可以用來顯示動(dòng)圖因此使用這種方式可以實(shí)現(xiàn)窗口的動(dòng)態(tài)背景圖片。

如果你用的是界面類的話,你還可以通過Widget等畫布,放大到和窗口一樣大小,然后再畫布上加載圖片,從而達(dá)到設(shè)置背景圖的效果。

總結(jié)

以上是生活随笔為你收集整理的Qt 设置窗口背景图片的几种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。