今天我们来学习 QT 里面的颜色对话框, 那么在 Qt 中提供了预定义的颜色对话框 QColorDialog 类, QColorDialog 类用于提供指定颜色的对话框部件, 例如下面这个:
颜色对话框和我们之前介绍的消息对话框的使用方式一样, 如下:
那么在 Qt 中的 QColor 类用来在程序中表示颜色的概念; QColor 类同时支持多种颜色表示方式: a> RGB: 以红绿蓝为基准的三色模型 b> HSV: 以色调饱和度明度为基准的六角锥体模型 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()
- {
- }
我们这个程序实现了带有两个按钮的界面, 构建运行得到的效果如图所示:
可能细心的小伙伴已经发现了, 在这两个按钮函数中我们并没有做什么事情, 那么下来我们就在 Color Dialog 中实现下一个颜色编辑器, 代码入下所示:
- void Widget::ColorDialogBtn_Clicked(){
- QColorDialog dlg(this);
- dlg.setWindowTitle("Color Editor"); // 设置窗口名称
- dlg.setCurrentColor(QColor(100, 111, 222)); // 设置当前窗口颜色
- 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();
- }
- }
我们再次构建运行下, 点击 Color Dialog 按钮, 出现入下界面:
我们点击 OK 后, 打印出入下信息:
那么上面的数字是否有点熟悉呢? 大家仔细观察下就知道那个和我们刚才弹出界面的属性一模一样
下来我们再继续做 Input Dialog 按钮的信息, 程序如下:
- void Widget::InputDialogBtn_Clicked(){
- QInputDialog dlg(this);
- dlg.setWindowTitle("Input Test");
- dlg.setLabelText("Please input an integer:");
- dlg.setInputMode(QInputDialog::IntInput); // 设置输入的是数字
- dlg.setIntMinimum(0); // 设置输入数字的最小值是 0
- dlg.setIntMaximum(255); // 设置输入数字的最大值是 255
- if( dlg.exec() == QInputDialog::Accepted )
- {
- qDebug() << dlg.intValue();
- }
- }
我们再次构建运行, 点击 Input Dialog 按钮后得到如下图所示的界面,
我们点击 OK, 打印出来的界面如下:
我们还可以输入文本信息, 在代码中添加 dlg.setInputMode(QInputDialog::TextInput); 然后在打印时: qDebug() << dlg.textValue(); 最终我们运行得到的界面如图所示:
我们点击 OK, 打印出来的界面如下:
是不是跟我们输入的字符一样呢? 肯定是啦! 好了, 今天关于颜色对话框的相关知识我们就先学习到这了后面我们接着继续学习
以上内容来自狄泰软件学院的 QT 教程, 欢迎大家一起来学习, 可以加我 QQ:243343083, 一起学习狄泰技术交流群: 199546072
来源: http://www.bubuko.com/infodetail-2547797.html