Qt介面設定背景(借鑑他人)

2021-07-23 13:42:39 字數 1907 閱讀 7761

1.在學習的過程中乙個問題:主介面跳轉子視窗,發現子視窗背景沒有了。我的背景圖是直接通過樣式表設定的。執行後,不起作用,於是想到直接在**中設定。

2.貼出找到的解決方法:(在此感謝@滴水穿石,紅色部分是我解決問題應用**)

視窗背景無非兩種:背景色、背景。qt中視窗背景如何設定?下面介紹三種方法: 一、

qpalette設定背景

二、實現paintevent,使用qpainter來繪製背景

三、使用qss來設定背景

關於qss的使用不想多說,一般我不用qss設定視窗背景,也不建議使用。(

注意: 這裡是對於視窗而言)。如果是子部件當然可以。因為視窗使用qss設定背景之後,若子部件不使用同樣的方式來設定,預設則會繼承父視窗的樣式

子部件一般情況下也

不需要設定背景,即使需要使用qss也完全可以滿足。設定較多的是背景色與圖示,qss中使用background或者background-color的方式可以實現背景色的設定,圖示則可以使用setpixmap或者seticon來設定!

下面介紹

qpalette以及

paintevent

一、qpalette設定背景

建構函式中可以使用如下方式:

(1)設定背景色

qpalette 

palette

(this->palette());

palette.setcolor(qpalette::background, qt::black);

this->setpalette(

palette

);或:

qpalette palette;

palette.setbrush(this->backgroundrole(), qt::black);

this->setpalette(palette);  這裡

setcolor

和setbrush都可以使用!

(2)設定背景

qpixmap pixmap = qpixmap(":/qm/safe").scaled(this->size());

qpalette 

palette

(this->palette());

palette

.setbrush(qpalette::background, qbrush(pixmap));

this->

setpalette(

palette);

上面方式無論設定背景色還是背景qpalette::background與this->backgroundrole()是等價的!

二、paintevent設定背景

(1)設定背景色

void iiimark::paintevent(qpaintevent *)

(2)設定背景

void iiimark::paintevent(qpaintevent *)

注意:(1)以上都是用

scaled方式對進行了適應視窗大小的設定,因為所給的大小不一定滿足要求,所以採用此方式!當然經過拉伸或者壓縮之後會變形(純色除外),所以對採用此方式時需要注意。

(2)設定背景範圍的時候如果需要充滿整個視窗最好使用this->rect(),因為我看到很多人在使用qrect(0, 0, 400, 400)之類的語句,那麼如果視窗大小改變了呢?此句是不是要跟著變呢?

(3)如果需要背景或者背景色隨可以發生改變時,也就是所謂的換膚功能,則採用paintevent的方式,在需要改變的時候使用update()來進行更新。

(4)this->setautofillbackground(true)又讓我想起了tr(),被很多人濫用。這句話在什麼時候使用呢?不妨採用qpalette設定背景的方式加上與去掉這句話對比一下(在有父視窗的情況下使用)。如果這個qwidget直接show,則有背景色,如果放到乙個父視窗中,就沒有效果。新增該句即可!

Qt 視窗設定背景

1.方法一 qpalette palette palette.setbrush qpalette background,qbrush qpixmap images background.png scaled this size this setpalette palette 2.方法二this se...

Qt 設定視窗背景

環境 qt6.0 參考 qt 設定視窗背景有三種方式 使用 qpalette 設定背景 實現 paintevent,使用 qpainter 繪製背景 使用 qss 設定。其中,使用 qss 設定視窗背景容易出現問題,原因是口使用qss設定背景之後,若子部件不使用同樣的方式來設定,預設則會繼承父視窗的...

QT背景設定 Win QMenu定製

1.通過border image url xx top right button left 設定元件的背景 樣例如下 menu menu hover 2.qmenu定製item的大小 win上建立類menustyle 繼承 qwindowsstyle,然後重寫int pixelmetric pixe...