Qt之QColorDialog

简述

QColorDialog提供了一个对话框用于选择颜色。

静态函数getColor()可以用于展示出对话框允许用户指定一个颜色。通过指定额外的选项参数ShowAlphaChannel,可以让用户在选择颜色的同时选择透明度。

通过点击"Pick Screen Color",用户可以拾取程序窗口内的颜色。

使用

效果

源码

构造函数

    colorDialog = new QColorDialog;
    colorDialog->setOption(QColorDialog::ShowAlphaChannel);

    QPushButton *pushBtn = new QPushButton("添加颜色");
    QHBoxLayout *hLayout = new QHBoxLayout;
    hLayout->addWidget(pushBtn);

    connect(colorDialog, &QColorDialog::currentColorChanged,
            this, &Widget::colorValue);
    connect(pushBtn, &QPushButton::clicked, this, &Widget::showColorDialog);

    this->setLayout(hLayout);

槽函数

void Widget::colorValue(const QColor &color)
{
    int r, g, b, a;
    color.getRgb(&r, &g, &b, &a);

    qDebug() << r << " " << g << " "
             << b << " " << a;
}

void Widget::showColorDialog()
{
    colorDialog->show();
}

常用设置

设置当前颜色

设置对话框当前颜色

setCurrentColor(const QColor &color);

设置可选功能

ColorDialog中有些功能是默认关闭的,如透明度(A)通道。可以通过设置选项来打开

setOption(QColorDialog::ShowAlphaChannel);
setOptions(QColorDialog::ShowAlphaChannel);//同时设置多个选项

枚举:QColorDialog::ColorDialogOption

常量描述
QColorDialog::ShowAlphaChannel0x00000001允许用户设置颜色的透明度
QColorDialog::NoButtons0x00000002不显示OKCancel按钮
QColorDialog::DontUseNativeDialog0x00000004使用Qt标准颜色对话框,而不是操作系统本地颜色对话框。

显示对话框

有三种方法可以让颜色对话框显示出来了

colorDialog->show();
colorDialog->setVisible(true);
colorDialog->getColor();

其中的第三种方法无法触发currentColorChanged(const QColor &color)。

信号槽

信号

名称描述
colorSelected(const QColor &color)OK按下后,该信号会被触发
currentColorChanged(const QColor &color)当对话框中选择的颜色发生变化时触发。

引用

[1] Qt助手


版权声明:本文为YinShiJiaW原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。