在上一篇里面,学习了两种Qt提供的标准对话框,消息对话框和文件对话框,消息对话框用于向用户提示信息;文件对话框用户获取用户选择的文件路径。
今天继续学习 Qt提供的其他两种对话框,颜色对话框和输入对话框。
颜色选择对话框
颜色对话框用于指定颜色,常规使用方式遵循三板斧原则:创建对象后指定父组件并设置属性、模态调用exec()、根据返回值选择执行流程。
Qt中以QColor类来表示颜色的概念,它支持多种颜色表示方式。
- RGB:以红、绿、蓝为基准的三色模型。
- HSV:以色调、饱和度、明度表示的六角椎体模型。
- CMYK:以天蓝、品红、黄色、黑色为基准的全彩印刷色彩模型。
根据三板斧的方式使用如下:
QColorDialog dia(this);
dia.setWindowTitle("Color Editor");
dia.setCurrentColor(Qt:: red);//常值传递const引用
//dia.setCurrentColor(QColor(100,100,100));//通过生成临时对象来设置RGB初始参数
if(dia.exec() == QColorDialog::Accepted )
{
QColor color = dia.selectedColor();
qDebug() << color;
qDebug() << color.red();
qDebug() << color.green();
qDebug() << color.blue();
qDebug() << color.hue();
qDebug() << color.saturation();
qDebug() << color.value();
}
当运行程序后会弹出一个颜色选择对话框:
弹出对话框直接点击OK后的输出结果是:
输出结果和在对话框上的数据是一致的。
注意:在设置默认颜色时候我们传递的实参并不是一个const引用,而是传递的常数值或者使用了临时变量,为什么正确?
- const引用在传实参时,若实参类型正确但是它不是左值时就会生成临时对象;若实参的类型不正确,但是可以转换成正确的类型时也会生成临时对象。
- C++允许常量引用,对于这种行为(建立临时变量),是因为该函数的目的是使用传递的值,而不是修改它们,因此创建临时变量不会造成任何不利的影响,反而会使函数在可处理的参数种类方面更通用。
- 实际上,对于形参为const引用的C++函数