简述
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::ShowAlphaChannel | 0x00000001 | 允许用户设置颜色的透明度 |
QColorDialog::NoButtons | 0x00000002 | 不显示OK和Cancel按钮 |
QColorDialog::DontUseNativeDialog | 0x00000004 | 使用Qt标准颜色对话框,而不是操作系统本地颜色对话框。 |
显示对话框
有三种方法可以让颜色对话框显示出来了
colorDialog->show();
colorDialog->setVisible(true);
colorDialog->getColor();
其中的第三种方法无法触发currentColorChanged(const QColor &color)。
信号槽
信号
名称 | 描述 |
---|---|
colorSelected(const QColor &color) | 当OK按下后,该信号会被触发 |
currentColorChanged(const QColor &color) | 当对话框中选择的颜色发生变化时触发。 |
引用
[1] Qt助手