Qt 使用QPalette設定按鈕顏色時,不生效

2021-09-12 02:28:14 字數 668 閱讀 2158

1、問題描述

在練習qstyleplugin示例時,通過外掛程式將按鈕顏色設定為紅色,但是沒有效果,原因是:

使用qpalette設定按鈕顏色時,不生效,**如下

qpalette.setbrush(qpalette::button, qt::red)
2、問題分析

qwidget的palette屬性的某些樣式受系統影響不生效

參見官方手冊:qwidget的屬性palette

當前樣式用於呈現所有標準qt小部件的內容,可以從小部件調色盤中自由選擇顏色和畫筆,或者在某些情況下,可以忽略調色盤(部分或完全)。特別是某些樣式(如gtk樣式,mac樣式和windows vista樣式)依賴於第三方api來呈現視窗小部件的內容,並且這些樣式通常不遵循調色盤。因此,不能保證為視窗小部件的調色盤分配角色會更改視窗小部件的外觀。可以選擇應用樣式表。

3、 解決方法

3.1 使用樣式表代替:官方手冊中推薦使用樣式表代替qpalette

3.2 使用qmotifstyle,但是只能在qt4中使用,qt5中沒有該類,沒有測試過

參考部落格

部落格中使用a.setstyle(qmotifstyle)後,再用qpalette設定button會生效。

但是qmotifstyle只有在qt4中可以用,在qt5中已經沒有該類了。

Qt學習筆記 調色盤類QPalette

類包含了 qt視窗不見的顏色組 collor group 1.active組,該組的顏色使用者當前活動的 active 視窗,即具有鍵盤或滑鼠焦點的視窗 2.inactive組,該組用語其他的視窗 3.disabled組,該組用語窗台為不可用的 disabled 的子視窗部件 不包含視窗 所有qt ...

Qt學習筆記 調色盤類QPalette

qpalette類包含了qt視窗不見的顏色組 collor group 1.active組,該組的顏色使用者當前活動的 active 視窗,即具有鍵盤或滑鼠焦點的視窗 2.inactive組,該組用語其他的視窗 3.disabled組,該組用語窗台為不可用的 disabled 的子視窗部件 不包含視...

QPalette類詳細使用方法

qpalette p l t 調色盤 類相當於對話方塊或控制項的調色盤,它管理著控制項或窗體的所有顏色資訊,每個窗體或控制項都包含乙個qpalette物件,在顯示時按照它的qpalette物件中對各部分各狀態下的顏色的描述來進行繪製。qpalette類有兩個基本的概念,乙個是colorgroup,另...