您好,登錄后才能下訂單哦!
????????今天我們來學習QT里面的顏色對話框,那么在 Qt 中提供了預定義的顏色對話框 QColorDialog 類,QColorDialog 類用于提供指定顏色的對話框部件,例如下面這個:
????????顏色對話框和我們之前介紹的消息對話框的使用方式一樣,如下:
????????那么在 Qt 中的 QColor 類用來在程序中表示顏色的概念;QColor 類同時支持多種顏色表示方式:a> RGB:以紅綠藍為基準的三色模型。b> HSV:以色調(diào)、飽和度、明度為基準的六角錐體模型。c> CMYK:以天藍、品紅、×××、黑為基準的全彩印刷色彩模型。
????????下來我們就做個實驗,Widget 頭文件如下所示:
#include?<QWidget>#include?<QPushButton> class?Widget?:?public?QWidget { ????Q_OBJECT private: ????QPushButton?ColorDialogBtn; ????QPushButton?InputDialogBtn; private?slots: ????void?ColorDialogBtn_Clicked(); ????void?InputDialogBtn_Clicked(); public: ????Widget(QWidget?*parent?=?0); ????~Widget(); };
???????
????????Widget.cpp 如下所示
#include?"Widget.h"#include?<QDebug> #include?<QColorDialog> #include??<QInputDialog> Widget::Widget(QWidget?*parent)?:?QWidget(parent), ???ColorDialogBtn(this),?InputDialogBtn(this) { ????ColorDialogBtn.setText("Color?Dialog"); ????ColorDialogBtn.move(20,?20); ????ColorDialogBtn.resize(160,?30); ????InputDialogBtn.setText("Input?Dialog"); ????InputDialogBtn.move(20,?70); ????InputDialogBtn.resize(160,?30); ????resize(200,?200); ????setFixedSize(200,?120); ????connect(&ColorDialogBtn,?SIGNAL(clicked()),?this,?SLOT(ColorDialogBtn_Clicked())); ????connect(&InputDialogBtn,?SIGNAL(clicked()),?this,?SLOT(InputDialogBtn_Clicked())); } void?Widget::ColorDialogBtn_Clicked() { } void?Widget::InputDialogBtn_Clicked() { ???? } Widget::~Widget() { }
????????我們這個程序?qū)崿F(xiàn)了帶有兩個按鈕的界面,構(gòu)建運行得到的效果如圖所示:
????????
????????可能細心的小伙伴已經(jīng)發(fā)現(xiàn)了,在這兩個按鈕函數(shù)中我們并沒有做什么事情,那么下來我們就在? Color Dialog 中實現(xiàn)下一個顏色編輯器,代碼入下所示:
void?Widget::ColorDialogBtn_Clicked() { ????QColorDialog?dlg(this); ????dlg.setWindowTitle("Color?Editor");?????????//?設(shè)置窗口名稱 ????dlg.setCurrentColor(QColor(100,?111,?222));?//?設(shè)置當前窗口顏色 ????if(?dlg.exec()?==?QColorDialog::Accepted?) ????{ ????????QColor?color?=?dlg.selectedColor(); ????????qDebug()?<<?color; ????????qDebug()?<<?color.red(); ????????qDebug()?<<?color.green(); ????????qDebug()?<<?color.blue(); ????????qDebug()?<<?color.hue(); ????????qDebug()?<<?color.saturation(); ????????qDebug()?<<?color.value(); ????} }
????????我們再次構(gòu)建運行下,點擊 Color Dialog 按鈕,出現(xiàn)入下界面:
????????
????????我們點擊 OK 后,打印出入下信息:
????????那么上面的數(shù)字是否有點熟悉呢?大家仔細觀察下就知道那個和我們剛才彈出界面的屬性一模一樣。
????????下來我們再繼續(xù)做 Input Dialog 按鈕的信息,程序如下:
void?Widget::InputDialogBtn_Clicked() { ????QInputDialog?dlg(this); ????dlg.setWindowTitle("Input?Test"); ????dlg.setLabelText("Please?input?an?integer:"); ????dlg.setInputMode(QInputDialog::IntInput);???????//?設(shè)置輸入的是數(shù)字 ????dlg.setIntMinimum(0);???????????????????????????//?設(shè)置輸入數(shù)字的最小值是0 ????dlg.setIntMaximum(255);?????????????????????????//?設(shè)置輸入數(shù)字的最大值是255 ????if(?dlg.exec()?==?QInputDialog::Accepted?) ????{ ????????qDebug()?<<?dlg.intValue(); ????} }
????????我們再次構(gòu)建運行,點擊 Input Dialog 按鈕后得到如下圖所示的界面,
????????
??????? 我們點擊OK,打印出來的界面如下:
????????我們還可以輸入文本信息,在代碼中添加 dlg.setInputMode(QInputDialog::TextInput);? 然后在打印時:qDebug() << dlg.textValue();最終我們運行得到的界面如圖所示:
????????
????????我們點擊OK,打印出來的界面如下:
????????是不是跟我們輸入的字符一樣呢?肯定是啦!好了,今天關(guān)于顏色對話框的相關(guān)知識我們就先學習到這了。后面我們接著繼續(xù)學習。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。