QPalette通過獲取控件或窗口的調色板對象(palette)對該控件或窗口進行色彩設置
可設置該widget不同狀態的色彩(ColorGroup):
QPalette::Active 獲得焦點的狀態下
QPalette::inactive 未獲得焦點的狀態下
QPalette::Disable 不可用的狀態下
設置不同部位的顏色(ColorRole):
QPalette::Window 對窗體的背景顏色進行設置
QPalette::WindowText 對窗體中的文字(比如Label中的文字進行設置,無法影響Edit
QPalette::Button 對按鈕進行設置(但貌似無法動態更新,直接使用無效果
QPalette::ButtonText 對按鈕文字的顏色進行設置(QPushButton,QComboBox的小三角
QPalette::Base 主要用于文本輸入小部件的背景顏色(QComboBox的下拉列表背景色也會更改
函數:
用于設置單一顏色:
void QPalette::setColor(ColorGroup group, ColorRole role, const QColor &color)
void QPalette::setColor(ColorRole role, const QColor &color)
用于設置多樣性的顏色(圖片背景,漸變之類:
void QPalette::setBrush(ColorGroup group, ColorRole role, const QBrush &brush)
void QPalette::setBrush(ColorRole role, const QBrush &brush)
來自 《Qt5開發與實例(第三版)》 的一個例子
效果圖:
貼一下 顏色選擇ComboBox的代碼
#include "combobox.h" ComboBox::ComboBox(QWidget * parent) :QComboBox(parent){ QStringList list = QColor::colorNames();//獲取顏色列表 for(QString str : list){ QPixmap pix(QSize(70, 20)); //圖像對象 pix.fill(QColor(str)); //填充顏色 addItem(QIcon(pix), str); //添加進ComboBox setIconSize(QSize(70,20)); //設置Icon也就是顏色塊的大小 //設置comboBox的下拉列表的尺寸調整策略為符合內容大小(自適應 setSizeAdjustPolicy(QComboBox::AdjustToContents); }}
設置各部分顏色的槽函數
void Palette::setWindowColor(QString color){ QPalette palette = this->palette(); palette.setColor(QPalette::Window, QColor(color)); this->setPalette(palette); } void Palette::setWindowTextColor(QString color){ QPalette palette = showFrame->palette(); palette.setColor(QPalette::WindowText, QColor(color)); showFrame->setPalette(palette);} void Palette::setButtonColor(QString color){ QPalette palette = showFrame->palette(); palette.setColor(QPalette::Button, QColor(color)); showFrame->setPalette(palette); showFrame->update();} void Palette::setBtnTextColor(QString color){ QPalette palette = showFrame->palette(); palette.setColor(QPalette::ButtonText, QColor(color)); showFrame->setPalette(palette);} void Palette::setBaseColor(QString color){ QPalette palette = showFrame->palette(); palette.setColor(QPalette::Base, QColor(color)); showFrame->setPalette(palette);}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答
圖片精選