Qt中怎么利用QPalette實現(xiàn)一個調(diào)色板類

Qt中怎么利用QPalette實現(xiàn)一個調(diào)色板類,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供贛州網(wǎng)站建設(shè)、贛州做網(wǎng)站、贛州網(wǎng)站設(shè)計、贛州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、贛州企業(yè)網(wǎng)站模板建站服務(wù),10多年贛州做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

QPalette通過獲取控件或窗口的調(diào)色板對象(palette)對該控件或窗口進行色彩設(shè)置

可設(shè)置該widget不同狀態(tài)的色彩(ColorGroup):

QPalette::Active      獲得焦點的狀態(tài)下

QPalette::inactive   未獲得焦點的狀態(tài)下

QPalette::Disable    不可用的狀態(tài)下

設(shè)置不同部位的顏色(ColorRole):

QPalette::Window     對窗體的背景顏色進行設(shè)置

QPalette::WindowText     對窗體中的文字(比如Label中的文字進行設(shè)置,無法影響Edit

QPalette::Button     對按鈕進行設(shè)置(但貌似無法動態(tài)更新,直接使用無效果

QPalette::ButtonText     對按鈕文字的顏色進行設(shè)置(QPushButton,QComboBox的小三角

QPalette::Base    主要用于文本輸入小部件的背景顏色(QComboBox的下拉列表背景色也會更改

函數(shù):

用于設(shè)置單一顏色:

void QPalette::setColor(ColorGroup group, ColorRole role, const QColor &color)

void QPalette::setColor(ColorRole role, const QColor &color)

用于設(shè)置多樣性的顏色(圖片背景,漸變之類:

void QPalette::setBrush(ColorGroup group, ColorRole role, const QBrush &brush)

void QPalette::setBrush(ColorRole role, const QBrush &brush)

來自 《Qt5開發(fā)與實例(第三版)》 的一個例子

效果圖:

Qt中怎么利用QPalette實現(xiàn)一個調(diào)色板類

貼一下 顏色選擇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)); //設(shè)置Icon也就是顏色塊的大小
 
 //設(shè)置comboBox的下拉列表的尺寸調(diào)整策略為符合內(nèi)容大小(自適應(yīng)
 setSizeAdjustPolicy(QComboBox::AdjustToContents);
 }
}

設(shè)置各部分顏色的槽函數(shù)

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);
}

看完上述內(nèi)容,你們掌握Qt中怎么利用QPalette實現(xiàn)一個調(diào)色板類的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站題目:Qt中怎么利用QPalette實現(xiàn)一個調(diào)色板類
瀏覽路徑:http://muchs.cn/article22/iheejc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化App設(shè)計、企業(yè)建站品牌網(wǎng)站設(shè)計、企業(yè)網(wǎng)站制作、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)