Qt子視窗背景色繼承問題

2021-06-01 17:49:45 字數 1467 閱讀 5529

有時我們需要在qwidget中再嵌入子qwidget,且要求設定父qwidget的背景色,而子qwidget的背景色不變.於是我們寫出了下面的**

intmain

(int

argc,

char

**argv)

然而執行結果不對,子視窗繼承了父視窗的背景顏色,效果如下圖

我們修改一下**,讓setstylesheet只作用于父視窗

intmain

(int

argc,

char

**argv)

");// 設定id對應元素的背景色‍

qvboxlayout

*layout

=new

qvboxlayout()

;‍ layout

->

addwidget

(sw1);‍

layout

->

addwidget

(sw2);‍

pw->

setlayout

(layout);

pw->

resize

(300

,200);‍

pw->

show()

; return

exec()

; }

再看顯示效果,按鈕的背景色對了,可sw2還是看不到,這是為什麼呢

實際這種結果並不是繼承了父視窗背景色,而是由於了視窗的背景色沒有重新整理,使用setautofillbackground讓sw2自動重新整理背景

intmain

(int

argc,

char

**argv)

");// 設定id對應元素的背景色

qvboxlayout

*layout

=new

qvboxlayout()

;‍ layout

->

addwidget

(sw1);‍

layout

->

addwidget

(sw2);‍

pw->

setlayout

(layout);

pw->

resize

(300

,200);

pw->

show()

;‍ return

exec()

;‍ }

最終顯示效果如下

Qt子視窗背景色繼承問題

有時我們需要在qwidget中再嵌入子qwidget,且要求設定父qwidget的背景色,而子qwidget的背景色不變.於是我們寫出了下面的 intmain int argc,char argv 然而執行結果不對,子視窗繼承了父視窗的背景顏色,效果如下圖 我們修改一下 讓setstylesheet...

Qt設定視窗 按鈕背景色

1 設定視窗背景色時使用如下樣式表 background image url img png bj png 使用後如果背景大小不夠會被平鋪。qpushbutton qpushbutton hover 如果視窗已設定背景,則會出現類似父視窗設定時,如果子視窗未設定相應的屬性覆蓋,則子視窗會使用父視窗對...

MFC 設定視窗背景色

若要改變cview,cframewnd或cwnd物件的背景顏色需要處理wm erasebkgnd訊息 wm erasebkgnd true表示已處理背景重新整理 false表示需要在onpaint裡處理 示例 bool cimgview onerasebkgnd cdc pdc q oneraseb...