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