《九》Qt各种对话框之QColorDialog

这篇具有很好参考价值的文章主要介绍了《九》Qt各种对话框之QColorDialog。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

        QColorDialog类继承于QDialog,是一个设计用来选择颜色的对话框部件。

《九》Qt各种对话框之QColorDialog,Qt学习之路,qt,开发语言

QColorDialog

在介绍 QColorDialog 之前,我们先简单介绍一下 QColor 类。QColor 类用于表示颜色,支持 RGB(红绿蓝)三原色表示,也支持其他颜色模型表示,例如 HSV (hue 色调, saturation 饱和度, value 明亮度),CMYK(cyan 青, magenta 紫或叫品红, yellow 黄,  black 黑)。HSV 常用于描述人眼对颜色的感官,CMYK 常用于绘画或彩色印刷的颜料配置。计算机显示则更多地使用 RGB 三原色,下面我们主要介绍 RGB 的颜色模型相关函数内容。
针对半透明显示的特效,颜色也可以使用第四个分量,Alpha 通道,表示半透明程度,与三原色一起就是 ARGB。QColor 对象的构造或修改如下:

QColor(int r, int g, int b, int a = 255)  //根据红、绿、蓝、Alpha构造颜色对象
void    setRgb(int r, int g, int b, int a = 255) //设置红、绿、蓝、Alpha 值
int    red() const      //获取红色分量
int    green() const  //获取绿色分量
int    blue() const    //获取蓝色分量
int    alpha() const  //获取Alpha分量
void    getRgb(int * r, int * g, int * b, int * a = 0) const  //一次性读取四个通道值到参数指针指向的变量

颜色除了数值的表示方法,还可以仿照 HTML/CSS 网页中的颜色表述,比如 RGB 使用字符串表示 "#112233" ,这里是十六进制字符串表示,ARGB 表示为  "#ff112233" ,字符串表述的颜色设置和获取函数如下:

QString QColor::​name() const   //获取字符串表示的颜色,如 "#RRGGBB"
void QColor::​setNamedColor(const QString & name)  //设置字符串表示的颜色,如 "#RRGGBB"

QColor 对象如果初始化时没有设置任何颜色,那么处于不合法状态,可以使用下面函数判断:

bool QColor::​isValid() const

如果颜色合法,返回 true ,如果不合法,返回 false。

下面介绍 QColorDialog 对话框,QColorDialog 用于获取颜色,比如标签控件的前景色、背景色等,都可以通过 QColorDialog 获取颜色,然后修改界面控件的配色。QColorDialog 获取的颜色使用 QColor 对象返回。QColorDialog 颜色对话框如下图所示:

《九》Qt各种对话框之QColorDialog,Qt学习之路,qt,开发语言

对话框左上角是基本颜色的网格,点击颜色网格可以获取基本颜色,右边则是大片的渐变颜色区域,渐变颜色区域每一个点都是一种颜色。对话框左下角可以添 加自定义的新 颜色到网格中,方便下次选取。右下角的 Red、Green、Blue 三色编辑框也可以修改颜色分量的值。HTML 编辑框内容就是当前颜色对应网页字符串的颜色描述方式。
颜色对话框有两种使用方式,一种是自定义对话框对象进行弹窗,第二种是使用对话框的静态函数弹窗。第二种静态函数的使用方式更为便捷。 

(1)QColorDialog 普通成员函数

颜色对话框继承基类 QDialog 所有的函数,可以模态显示,也可以非模态显示,exec()、show() 等函数与基类一样。
颜色对话框的构造和析构函数如下:

QColorDialog(QWidget * parent = 0)
QColorDialog(const QColor & initial, QWidget * parent = 0)
~QColorDialog()

 第一个构造函数参数只是设置父窗口指针,第二个构造函数可以指定一个初始颜色值,在弹窗时默认选中这个颜色。
颜色对话框获取颜色的普通成员函数分两种场景,第一种场景是在对话框保持显示时,用户点击的颜色:

QColor    currentColor() const   //获取当前颜色
void    setCurrentColor(const QColor & color)   //设置当前颜色
void    currentColorChanged(const QColor & color)  //信号,当前颜色变化时触发该信号

如果是非模态显示的自定义颜色对话框,那么使用上面函数可以随时获取用户点选颜色的变化。

第二种场景获取颜色的普通函数,是需要用户点击“OK”按钮确认后,最终返回的颜色:

QColor    selectedColor() const   //用户选择颜色并且点击 “OK”确认后返回的颜色值
void    colorSelected(const QColor & color) //信号,用户选择颜色并且点击 “OK”确认后,触发该信号

用户点击“OK”按钮后对话框就自动关闭了,selectedColor() 是最终选择的颜色,而前面的 currentColor() 可以一直变化选择。

QColorDialog 重载了基类的打开函数:

void QColorDialog::​open(QObject * receiver, const char * member)

这个打开函数参数里第一个 receiver 是接收 colorSelected() 信号的对象,第二个 member 就是一次性关联的槽函数名称。这个 open() 函数是一次性的,如果关闭了,那么 receiver 对象 member  槽函数会自动解绑。

QColorDialog 还可以设置特殊的颜色对话框选项:

ColorDialogOptions    options() const  //获取颜色对话框选项
void    setOptions(ColorDialogOptions options)   //设置颜色对话框选项
void    setOption(ColorDialogOption option, bool on = true)  //开启或禁用一个选项标志位
bool    testOption(ColorDialogOption option) const  //测试一个选项标志位是否为 true

具体的 ColorDialogOptions  枚举常量如下:

《九》Qt各种对话框之QColorDialog,Qt学习之路,qt,开发语言

这些 ColorDialogOptions 都是二进制标志位,默认情况都是 0 ,除了有特殊需求情况,一般不使用这些标志位。
以上普通成员函数都是自定义对话框对象使用,实际中使用下面的静态函数模态显示更为方便。 

(2)QColorDialog 静态成员函数 

颜色对话框的静态函数就是针对静态函数内部临时定义的对话框对象,每次都是模态弹出: 

QColor    getColor(const QColor & initial = Qt::white, QWidget * parent = 0, const QString & title = QString(), ColorDialogOptions options = 0)   //静态函数

 静态函数 getColor() 参数里,initial 是初始选中的颜色,parent 是父窗口指针,title 是颜色对话框的标题文本,options 就是上面表格中的 ColorDialogOptions 标志位设置。
使用简单的一个函数就能获取一个颜色,这是非常方便使用的,例如:

QColor clr = QColorDialog::getColor();

这样一句简单代码就可以获取到颜色值。
注意 QColorDialog::getColor() 对话框显示时,如果用户按下 Cancel 按钮或者 Esc 键,那么会返回非法值的颜色对象,所以要注意判断返回值是否合法。
静态函数弹出的颜色对话框也可以进行一定的定制小操作,例如上面图片颜色对话框的左上角基本颜色网格,也叫 StandardColor ,可以进行修改:

QColor    standardColor(int index)   //静态函数,根据序号获取标准颜色(基本颜色)
void    setStandardColor(int index, QColor color)  //静态函数,根据序号设置标准颜色(基本颜色)

标准颜色网格或叫基本颜色网格,根据序号可以获取对应网格的颜色,也能修改网格颜色。
颜色对话框左下角的是 CustomColor ,就是用户定制颜色,初始时是空白的,用户选择某个颜色,点击“Add to Custom Colors ”按钮,就会添加到左下角的用户定制颜色网格。程序员也可以通过代码提前定制几个颜色:

int    customCount()   //静态函数,可以设置的用户定制颜色总数
QColor    customColor(int index)  //静态函数,根据序号获取用户定制颜色
void    setCustomColor(int index, QColor color)  //静态函数,根据序号设置用户定制颜色

 举例:

//头文件
#include<qpushbutton.h>
#include<QFrame>
#include<QColorDialog>
#include<QGridLayout>

//..........

private:
    QGridLayout *glayout;//定义布局
    QPushButton *colorbtn;//定义按钮

    //QFrame类是基本控件的基类,QWidget是QFrame类型
    QFrame *colorFrame;

private slots:
    void dispcolorFunc();
//源文件
    setWindowTitle("颜色对话框控件测试");
    this->setGeometry(200,100,500,400);

    glayout=new QGridLayout(this);
    colorbtn=new QPushButton("调用颜色对话框");
    colorFrame=new QFrame;

    colorFrame->setFrameShape(QFrame::Box);//设置形状
    colorFrame->setAutoFillBackground(true);//填充背景处理

    glayout->addWidget(colorbtn,0,0);
    glayout->addWidget(colorFrame,1,0);

    //槽函数链接
    connect(colorbtn,SIGNAL(clicked()),this,SLOT(dispcolorFunc()));

解释:

setWindowTitle(“颜色对话框控件测试”)是一个Qt的函数,用于设置窗口的标题为"颜色对话框控件测试"。this->setGeometry(200,100,500,400)是设置窗口的位置和大小,左上角坐标为(200,100),宽度为500,高度为400。

接下来的代码是创建一个QGridLayout布局管理器,并创建了一个QPushButton和一个QFrame控件。colorbtn是一个QPushButton,显示文本为"调用颜色对话框"。colorFrame是一个QFrame,用于显示颜色。

接着,使用glayout->addWidget()将colorbtn和colorFrame添加到布局管理器中,分别位于第一行和第二行的第一列。

最后,通过connect()函数将colorbtn的clicked信号与dispcolorFunc()槽函数进行连接,当colorbtn被点击时,会触发dispcolorFunc()函数的执行。

//槽函数
void Dialog::dispcolorFunc()
{
    QColor colorvalues=QColorDialog::getColor(Qt::red);

    if(colorvalues.isValid()){
        colorFrame->setPalette(QPalette(colorvalues));
    }
}

结果:

《九》Qt各种对话框之QColorDialog,Qt学习之路,qt,开发语言

感谢阅读!!!!!文章来源地址https://www.toymoban.com/news/detail-857945.html

到了这里,关于《九》Qt各种对话框之QColorDialog的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Qt】对话框QDialog类,模态对话框和非模态对话框

    QDialog类是所有对话框窗口类的基类。对话框窗口是一个用来完成短小任务或和用户进行简单交互的 顶层窗口 。 按照运行对话框时是否还可以和该程序的其它窗口进行交互,将它分为两类:模态(modal)对话框和非模态(modaless)对话框。 模态对话框 先看一个例子: 创建一

    2024年02月05日
    浏览(63)
  • Qt标准对话框:8大对话框详解

    颜色对话框类 QColorDialog 提供了一个可以获取指定颜色的对话框的对话框部件: 这里使用 QColorDialog 的静态函数 getColor () 来获取颜色,执行时弹出颜色选择对话框: 返回的是一个 QColor 类型的数据: 这四个数值分别代表:透明度(alpha)、Red、Green、Blue。它们的默认值都是

    2024年02月03日
    浏览(61)
  • Python Qt6快速入门-自定义对话框和标准对话框

    对话框是有用的 GUI 组件,可以与用户进行交流(因此得名对话框)。 它们通常用于文件打开/保存、设置、首选项或不适合应用程序主 UI 的功能。 它们是位于主应用程序前面的小模态(或阻塞)窗口,直到它们被关闭。 Qt 为最常见的用例提供

    2024年02月03日
    浏览(53)
  • 【Qt】:对话框(二)

    Q提供了多种可复用的对话框类型,即Qt标准对话框。Qt标准对话框全部继承于QDialog类。常用标准对话框如下: 消息对话框是应用程序中最常用的界面元素。消息对话框主要用于为用户提示重要信息,强制用户进行选择操作。 QMessageBox自己内置了一些图标和按钮,我们可以直接

    2024年04月16日
    浏览(64)
  • 【Qt】:对话框(一)

    对话框是GUI程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。 Qt常用的内置对话框有: QFiledialog (文件对话框). QColorDialog(颜色对话框)、 QFontDialog(字

    2024年04月14日
    浏览(83)
  • Qt对话框

    颜色对话框: 字体对话框: 输入对话框: 消息对话框:

    2024年02月06日
    浏览(48)
  • 【QT】标准对话框

    目录 1 概述 2 QFileDialog对话框 1.选择打开一个文件 2.选择打开多个文件 3.选择已有目录 4.选择保存文件名 3 QColorDialog对话框 4 QFontDialog对话框 5 QInputDialog标准输入对话框 1.输入文字 2.输入整数 3.输入浮点数 4.下拉列表选择输入 6 QMessageBox消息对话框 1.函数原型 2.简单信息

    2024年02月02日
    浏览(58)
  • Qt自定义对话框

    自定义框主要通过对现有对话框QDialog类的派生,根据需求编写成员函数、重载信号函数、槽函数,进而实现在主QWidget中点击某个按钮后,一个对话框的弹出 简化创建派生类 最后点击完成即可。 自定义ui界面,编写成员函数等 主窗口触发槽函数编写 这里常有一个固定的格式

    2024年02月13日
    浏览(50)
  • Qt标准对话框设置

    Qt标准对话框设置,设置字体、调色板、进度条等。

    2024年02月22日
    浏览(57)
  • QT 消息对话框按钮显示

    搞QT嘛,大多数都是军工。都要国产化,而且消息对话框的按钮的英文也不是很得劲,所以需要汉化。使用静态函数的按钮就是显示英文,汉化的代码如下。 QmessageBox功能挺强大的,可以设置默认的按钮,也可以设置点击窗口的关闭按钮实际上点击的是那个按钮,默认情况下

    2024年02月10日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包