Qt如何自定義修改表頭背景顏色

2021-10-03 09:38:36 字數 2786 閱讀 9387

筆者希望提供給使用者自定義修改表頭背景顏色的機會,但是查詢多個資料都表示,qt無法通過下述方式對已設定過表頭顏色的表頭進行顏色更換;還有表明無法對表頭背景顏色進行更換的,如下:

但是經過無數試錯,我發現,其實表頭背景可以實時修改,下面開始講述。

正確方法:

已知qt提供了由樣式表來設定表頭背景、字型樣式等方法,具體**如下:

ui-

>tablewidget-

>

horizontalheader()

->

setstylesheet

("qheaderview::section"

);

qt提供的樣式表,可以對介面進行自定義設定,而它的樣式表是由css啟發而來的,因此,它的樣式表為純文字檔案,這也是為何後面的引數是字串。

而正因要求引數為純文字,因此,我們不可能將使用者選擇的rgb值直接傳給setstylesheet()函式。所以此時很多人都會轉變思路,使用下面試錯的方法解決,但發現解決不了。這是因為,表頭只能通過樣式表的方式進行背景的修改。

那麼轉換一下思路,將rgb值從int型轉換為qstring型別即可,而qt提供了轉換的函式:

//將a轉換為string型別的a

int a =13;

qstring a = qstring::

number

(a);

且已知qstring可以進行加「+」操作,將兩個字串合併為乙個。因此,我們只需要將setstylesheet的引數用加「+」的形式表示出來即可,如下:

int ri = ui-

>horizontalslider-

>

value()

;qstring r = qstring::

number

(ri)

;int gi = ui-

>horizontalslider_2-

>

value()

;qstring g = qstring::

number

(gi)

;int bi = ui-

>horizontalslider_3-

>

value()

;qstring b = qstring::

number

(bi)

;ui-

>tablewidget4-

>

horizontalheader()

->

setstylesheet

("qheaderview::section"

);

測試得,成功,如下,分別為原樣式和當前使用者定義樣式:

試錯:用於提供一些解決思路

方法一

通過tablewidget的item來進行背景顏色的修改,**如下:

int r = ui-

>horizontalslider-

>

value()

;int g = ui-

>horizontalslider_2-

>

value()

;int b = ui-

>horizontalslider_3-

>

value()

;int count = ui-

>tablewidget4-

>

columncount()

;for

(int i =

0; i < count; i++

)

沒有響應。

方法二

通過tablewidget的horizontalheader()的調色盤來修改,**如下:

qcolor color;

int r = ui-

>horizontalslider-

>

value()

;int g = ui-

>horizontalslider_2-

>

value()

;int b = ui-

>horizontalslider_3-

>

value()

; color.

setrgb

(r,g,b,

255)

; qpalette pal = ui-

>tablewidget4-

>

horizontalheader()

->

palette()

; pal.

setcolor

(qpalette::base, color)

; ui-

>tablewidget4-

>

horizontalheader()

->

setpalette

(pal)

;

雖然表頭具有調色盤物件,但是該操作沒用。

Button自定義背景顏色及圓角

1 先在資源檔案colors.xml中定義按下和常規的顏色,eg 99ccff 0099ff 2 在drawable資料夾下建立2個檔案 分別為按下和常規的樣式,及設定按鈕的圓角,eg 常規顯示的顏色 xmlns android android color color btn color norma...

QT 修改控制項背景顏色

一.背景刷成黑色,前景色設為白色。方法一 paltette方式,經測試,該方法不會影響到其他控制項,推薦使用 qpalette bgpal palette bgpal.setcolor qpalette background,qcolor 0,0 0,255 qpalette background,...

QT自定義控制項重疊顏色異常

首先看錯誤效果 這是兩個qlistwidget的item qlistwidget 設定了alternatingrowcolors item 交替變換顏色 item是我自定義的widget控制項,上面放了一些qlabel,其中文字qlabel我使用qpalette設定為灰色,但始終顯示黑色。下面是修正...