QWidget設定視窗背景圖片的幾種方法

軟體的介面為了更直觀或美觀,常常需要透過圖片來表達。我們知道Qt中所有介面類的祖先是QWidget,因此學會給QWidget設定圖片是必須掌握的技能之一。但是程式設計是沒有標準答案的,達到同一效果可以有許多不同的方法。那麼給視窗設定背景圖片又有多少種方法呢?接下來透過寫個測試例子看看。

首先使用QtCreator新建一個基於QWidget的工程,然後給工程新增一個資原始檔,接著在資原始檔中新增一張圖片bg。jpg。

1.使用調色盤QPalette來設定圖片。

QWidget設定視窗背景圖片的幾種方法

首先獲得Widget的調色盤,然後設定設定調色盤背景(setBrush),最後將調色盤設定到Widget中。

QWidget設定視窗背景圖片的幾種方法

由於圖片太大導致整個視窗顯示不下。

2.在paintEvent事件中繪製圖片。

QWidget設定視窗背景圖片的幾種方法

drawPixmap在Widget的整個矩形區域繪製背景圖片,第三個引數為要繪製的圖片區域,傳入空的矩形表示整個圖片區域。

QWidget設定視窗背景圖片的幾種方法

透過這種方式可以將圖片平鋪到視窗上,缺點就是要使用paintEvent事件需要新建一個類,不適合子視窗。

3. 使用樣式表(setStyleSheet).

使用樣式表可以很方便設定介面,而且非常高效,還能讓介面和邏輯分離。真的是Qt裡非常好用的一個東西,設定背景圖片的語句也很簡單。

QWidget設定視窗背景圖片的幾種方法

一句話就搞定了,這裡使用border-image屬性可以讓圖片平鋪到視窗,效果與第二點一樣。不過在本例中由於Widget是頂層視窗,所以直接設定樣式表也不會顯示。所以樣式表比較適合子視窗來使用。

4.使用間接的方式來設定背景

,比如說在視窗上覆蓋一個QLabel,這個label始終與視窗一樣大。然後在label中設定圖片,視覺效果上和直接給視窗設定背景圖片一樣。

QWidget設定視窗背景圖片的幾種方法

建立一個label作為Widget的子視窗,然後設定圖片。透過在Widget的resizeEvent事件中設定label的大小與Widget一致。這裡需要注意呼叫QLabel的setScaledContents(true),否則效果和第一種一樣。由於QLabel可以用來顯示動圖因此使用這種方式可以實現視窗的動態背景圖片。

作者:fearlazy 文章內容僅代表個人觀點,如有雷同請為我點個贊吧!

QWidget設定視窗背景圖片的幾種方法