如何有效地設定QPushButton的背景

2021-09-28 10:44:20 字數 1857 閱讀 5081

使用qpalette設定qpushbutton的背景,發現未生效。

example

// 獲取按鈕的畫刷

qpalette pal = ui-

>pushbutton-

>

palette()

;// 使用顏色對話方塊選取顏色

qcolor color = qcolordialog::

getcolor

(color);if

(!color.

isvalid()

)return

;// 設定畫刷背景色,並將其應用到按鈕上

pal.

setbrush

(qpalette::background, color)

;ui-

>pushbutton-

>

setpalette

(pal)

;

這應該是新手最常見的錯誤用法,然而結果並不能如願。

其執行效果如圖所示:

修改**如下:

// 設定按鈕的屬性

ui->pushbutton-

>

setautofillbackground

(true);

// 背景色自動填充

ui->pushbutton-

>

setflat

(true);

// 樣式扁平

// 獲取按鈕的畫刷

qpalette pal = ui-

>pushbutton-

>

palette()

;// 使用顏色對話方塊選取顏色

qcolor color = qcolordialog::

getcolor

(color);if

(!color.

isvalid()

)return

;// 設定畫刷背景色,並將其應用到按鈕上

pal.

setbrush

(qpalette::window, color)

;ui-

>pushbutton-

>

setpalette

(pal)

;

執行程式,效果如下:

這句**是為了防止父控制項的背景色覆蓋該qpushbutton背景色,可能會讓人意外,但實際情況就是如此,一般用qpalette來設定顏色時都需要加上這句。

這句是針對qpushbutton專門寫的,在qt幫助文件中有說明:

如果去掉該行**,那麼就只有按鈕邊框會帶有顏色,內部背景色不會生效。效果如圖所示:

這句**是針對qpushbutton設定背景色所用的畫刷型別,用其他型別會導致背景色不生效

覺得本文章對你有幫助的,可以點讚或加關注哦!一切皆有可能,願世界更美好!

如何有效地報告Bug?

simon首先列舉了一系列拙劣bug報告的例子,包括 接著,他點出了報告bug的目的 在bug報告裡,要設法搞清什麼是事實 例如 我在電腦旁 和 xx出現了 什麼是推測 例如 我想問題可能是出在 如果願意的話,您可以省去推測,但是千萬別省略事實。然後,simon針對bug報告的不同問題分別提出了自己...

如何有效地報告Bug?

作者 崔康 發布於 十月 08,2012 自由軟體開發者simon tatham針對如何有效地報告bug發表了自己的看法,他列舉了一系列拙劣bug報告的例子,並提出了改正建議。simon首先列舉了一系列拙劣bug報告的例子,包括 接著,他點出了報告bug的目的 在bug報告裡,要設法搞清什麼是事實 ...

如何有效地解Bug RED方法

解bug應當是修復 中的缺陷,而不只是隱藏起來 譯註 解bug時常發生分析時總感覺快找到答案了,而後面卻一再陷入僵局。比如,將執行緒同步問題引起的一些時而有,時而沒有的問題。分析時可能會認為這是個典型的執行緒同步問題,a執行緒沒有按照預期的方式改變某個變數,導致了b執行緒處理出錯。這樣的分析結果如果...