一、前言
QColorDialog类继承于QDialog,是一个设计用来选择颜色的对话框部件。
对话框窗口 QDialog
QColorDialog颜色选择器一般用来让用户选择颜色,比如画图工具中选择画笔的颜色、刷子的颜色等。你可以使用静态函数QColorDialog::getColor()直接显示对话框,然后重新选择颜色,还能选择具有透明度的颜色,选择的颜色保存在函数返回的一个QColor类型的返回值。
用户通过预设的颜色表格选择颜色,或者通过输入RGB值选择,或者通过鼠标在触屏上滑动寻找想要的颜色。按下Enter键触发确认,按下ESC键触发退出。
QColorDialog *cdia = new QColorDialog(this);
cdia->setWindowTitle("my color dialog");
cdia->setCurrentColor(QColor("red"));
cdia->exec();
或者:
QColorDialog::getColor(QColor("red"),
this,
"my color dialog",
QColorDialog::DontUseNativeDialog);
二、QColorDialog类
1、currentColor
该属性表示当前在对话框中选择的颜色。
QColor currentColor() const
void setCurrentColor(const QColor &color)
2、options
该属性表示外观的一些显示策略,默认没有策略。如果需要的话,需要在显示之前设置此策略。
QColorDialog::ColorDialogOptions options() const
void setOptions(QColorDialog::ColorDialogOptions options)
QColorDialog::ColorDialogOption 描述 ShowAlphaChannel 允许用户选择颜色的alpha分量。 NoButtons 不要显示OK和Cancel按钮。 DontUseNativeDialog 使用Qt的标准颜色对话框,而不是操作系统自带的颜色对话框。
在linux下颜色对话框样式为:
设置DontUseNativeDialog|ShowAlphaChannel之后会恢复成标准对话框,并且多了一个alpha通道数值的输入。
3、公共函数
1)open
打开对话框,并且连接colorSelected信号绑定的槽,当对话框关闭的时候,这个信号槽连接会被断开。
void open(QObject *receiver, const char *member)
示例:打开的同时绑定colorSelected信号的作用槽函数,控制台输出选择的颜色RGB。
public slots:
void onColorSelected(const QColor &color);
void MainWindow::onColorSelected(const QColor &color)
{
qDebug()<<color;
}
QColorDialog *dia = new QColorDialog(this);
dia->resize(800,600);
dia->setWindowTitle("my color dialog");
dia->setCurrentColor(QColor("red"));
dia->setOptions(QColorDialog::DontUseNativeDialog | QColorDialog::ShowAlphaChannel);
dia->open(this,SLOT(onColorSelected(const QColor &)));
2)setOption
单独设置某一项显示策略的使能,参考上文options。
void setOption(QColorDialog::ColorDialogOption option, bool on = true)
3)testOption
返回某一项显示策略的使能,对应上文setOption。
bool testOption(QColorDialog::ColorDialogOption option) const
4)selectedColor
返回当前选择的颜色。
QColor selectedColor() const
4、静态公共函数
1)customColor
返回自定义颜色的索引对应的颜色。
QColor customColor(int index)
2)setCustomColor
设置自定义颜色每个索引对应的颜色。
void setCustomColor(int index, QColor color)
3)standardColor
返回标准颜色的索引对应的颜色。
QColor standardColor(int index)
4)setStandardColor
设置标准颜色的索引对应的颜色
void setStandardColor(int index, QColor color)
5)customCount
返回自定义颜色的数量。
int customCount()
6)getColor
使用模式状态打开对话框,默认给定颜色initial为白色可修改,还可传入窗口标题title和颜色对话框显示策略options。
QColor getColor(const QColor &initial = Qt::white,
QWidget *parent = nullptr,
const QString &title = QString(),
QColorDialog::ColorDialogOptions options = ColorDialogOptions())
5、信号
1)colorSelected
用户按下ok之后或者确认之后触发该信号。
void colorSelected(const QColor &color)
2)currentColorChanged
当窗口的颜色发生变化就会触发该信号。
void currentColorChanged(const QColor &color)