三十一 Qt中的調色盤QPalette

2021-07-27 05:43:40 字數 3909 閱讀 1866

1、  qpalette類是qt視窗中元件的調色盤,管理著qt元件的所有顏色資訊,控制著元件的顏色(qpalette是qt中標誌顏色資訊的資料結構)

2、  每個視窗元件都擁有乙個qpalette物件(qpalette物件為qwidget類的成員)

3、  視窗元件外觀所使用的顏色都定義於調色盤中

4、  重新設定視窗元件調色盤的值能夠改變特定區域的顏色

qpalette中的兩個概念:顏色組(enumqpalette::colorgroup)、顏色角色(enum qpalette::colorrole),顏色組決定什麼時候採用指定配色方案,顏色角色決定為誰採用指定配色方案

1、啟用顏色組(qpalette::active)元件獲得焦點時使用的配色方案

2、非啟用顏色組(qpalette::inactive)元件未獲得焦點時使用的配色方案

3、失效顏色組(qpalette::disabled)元件處於不可用狀態使用的配色方案

主要角色:

qpalette::window

乙個常規的背景顏色

qpalette::background

這個值是廢棄的,使用window代替

qpalette::windowtext

乙個一般的前景顏色

qpalette::foreground

這個值是廢棄的,使用windowtext代替.

qpalette::base

主要用於文字輸入元件的背景色,但也能用於其他的配色,比如combobox的下拉列表的背景和工具欄控制項。它通常是白的或者其他亮的顏色.

qpalette::alternatebase

和交替的行顏色一起作為交替的背景顏色使用

qpalette::tooltipbase

被用來作為qtooltip和qwhatsthis的背景顏色。tooltips使用qpalette的非啟用顏色組,因為tooltips不是活躍的視窗.

qpalette::tooltiptext

被用來作為qtooltip和qwhatsthis的前景顏色. tooltips使用qpalette的非啟用顏色組,因為tooltips不是活躍的視窗.

qpalette::text

和base一起使用的前景色.這通常和windowtext相同,這種情況下,他需要跟window與base有良好的對比度

qpalette::button

普通button的背景顏色。這個背景可以與window不同,因為一些風格中按鈕需求不同的背景色

qpalette::buttontext

與button顏色一起使用的按鈕前景色(文字顏色)

qpalette::brighttext

乙個與windowtext非常不同的文字顏色,並且此文字顏色與dark對比鮮明,典型的,用在使用text或windowtext將會繪製出弱對比度文字的地方,比如乙個按下的按鈕。注意,此文字顏色還可以用於其他事件而不僅僅是文字,文字顏色通常用於文字,但是使用文字顏色作為行、圖示等的文字顏色角色是非常普遍的

一些顏色角色最常使用在3d斜面與陰影效果,所有這些顏色角色都繼承自window,並且使用方式依賴於這種關係。比如,按鈕依賴它來產生吸引人的斜面外觀,主題滾動條依賴mid來變得與window輕微不同

qpalette::light

比button顏色更亮

qpalette::midlight

在button與light之間

qpalette::dark

比button更暗

qpalette::mid

在button與dark之間

qpalette::shadow

乙個非常暗的顏色,預設的.shadow顏色為qt::black

被選擇(被標記)的項有兩個角色:

qpalette::highlight

乙個表明選擇的項或是當前項的顏色,預設的,highlight的顏色是qt::darkblue

qpalette:: highlightedtext

乙個與highlight對比鮮明的文字顏色,預設的,highlightedtext顏色是qt::white

兩個與超連結有關的角色:

qpalette::link

未訪問超連結的文字顏色,預設的,link顏色為qt::blue

qpalette:: linkvisited

已訪問超連結的文字顏色,預設的,linkvisited顏色為 qt::magenta

注意: 當在qt中編寫富文字時不建議使用link與linkvisited角色,建議使用css或者qtextdocument::setdefaultstylesheet()函式改變連線的外觀,比如:

qtextbrowser browser;

qcolor linkcolor(qt::red);

qstring sheet = qstring::fromlatin1("a ").arg(linkcolor.name());

browser.document()->setdefaultstylesheet(sheet);

qpalette:: norole

沒有角色,這個特殊的角色經常用於表明乙個角色還未指定

void

setbrush( colorrole role, const qbrush & brush )

void

setbrush( colorgroup group, colorrole role, const qbrush & brush )

void

setcolor( colorgroup group, colorrole role, const qcolor & color )

void

setcolor( colorrole role, const qcolor & color )

注意:當使用qpalette為視窗設定背景並使用qpalette::window時,必須在使用qpalette之前,以true呼叫qwidget成員函式voidsetautofillbackground( bool enabled )

qpalette p = widget.palette();                            //獲得widget的調色盤

p.setcolor(qpalette::active,qpalette::windowtext, qt::blue);

p.setcolor(qpalette::inactive, qpalette::windwotext,qt::red);

widget.setpalette(p); //將顏色資訊設定回widget

#ifndef widget_h

#define widget_h

#include #include #include #include class widget : public qwidget;

#endif // widget_h

#include "widget.h"

#include widget::widget(qwidget *parent)

:qwidget(parent), m_button(this), m_edit(this), m_label(this)

void widget::onbuttonclicked()

widget::~widget()

宣告:此文根據 狄泰學院唐老師的《qt實驗分析教程》創作,並根據自身理解與官方文件對其進行了少許的擴充套件

Qt 筆記 調色盤

qpalette類包含了元件狀態的顏色組 qpalette物件包含了3個狀態的顏色描述 啟用顏色組 active 元件獲得焦點使用的顏色搭配方案 非啟用顏色組 inactive 元件失去焦點使用的顏色方案 失效顏色組 disabled 元件處於不可用狀態使用的顏色方案 qpalette中的顏色組定義...

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 的子視窗部件 不包含視...