溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

QT之顏色對話框(十七)

發(fā)布時間:2020-07-06 01:28:07 來源:網(wǎng)絡(luò) 閱讀:4042 作者:上帝之子521 欄目:開發(fā)技術(shù)

????????今天我們來學習QT里面的顏色對話框,那么在 Qt 中提供了預定義的顏色對話框 QColorDialog 類,QColorDialog 類用于提供指定顏色的對話框部件,例如下面這個:

QT之顏色對話框(十七)

????????顏色對話框和我們之前介紹的消息對話框的使用方式一樣,如下:

QT之顏色對話框(十七)

????????那么在 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)建運行得到的效果如圖所示:

????????QT之顏色對話框(十七)

????????可能細心的小伙伴已經(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)入下界面:

????????QT之顏色對話框(十七)

????????我們點擊 OK 后,打印出入下信息:

QT之顏色對話框(十七)

????????那么上面的數(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 按鈕后得到如下圖所示的界面,

????????QT之顏色對話框(十七)

??????? 我們點擊OK,打印出來的界面如下:

QT之顏色對話框(十七)

????????我們還可以輸入文本信息,在代碼中添加 dlg.setInputMode(QInputDialog::TextInput);? 然后在打印時:qDebug() << dlg.textValue();最終我們運行得到的界面如圖所示:

????????QT之顏色對話框(十七)

????????我們點擊OK,打印出來的界面如下:

QT之顏色對話框(十七)

????????是不是跟我們輸入的字符一樣呢?肯定是啦!好了,今天關(guān)于顏色對話框的相關(guān)知識我們就先學習到這了。后面我們接著繼續(xù)學習。

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI