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ā)與實例(第三版)》 的一個例子
效果圖:
貼一下 顏色選擇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)