QT_QColorDialog颜色对话框

📅 2026/8/19 13:41:42
QT_QColorDialog颜色对话框
文章目录QT_QColorDialog颜色对话框两种使用方式静态方法最常用、最简洁实例化对象更灵活常用方法一览常用选项QColorDialog::Option使用案例QT_QColorDialog颜色对话框QColorDialog是Qt提供的标准颜色选择对话框允许用户通过图形界面直观地选择颜色。它继承自QDialog支持RGB/HSL输入、屏幕取色器、自定义颜色等功能。两种使用方式静态方法最常用、最简洁直接调用 getColor() 弹出模态对话框阻塞程序直到用户选择或取消QColor colorQColorDialog::getColor(Qt::white,// 初始颜色this,// 父窗口选择颜色,// 对话框标题QColorDialog::ShowAlphaChannel// 可选显示透明度通道);if(color.isValid()){// 用户点击了确定使用选中的颜色qDebug()选择的颜色:color.name();// 输出如 #ff0000}else{// 用户点击了取消qDebug()用户取消了选择;}必用 color.isValid() 判断用户是否确认选择。用户点击取消时返回的是无效 QColor()实例化对象更灵活创建 QColorDialog 实例可自定义颜色、选项并通过信号槽交互QColorDialog*dialognewQColorDialog(this);dialog-setCurrentColor(Qt::blue);// 设置初始颜色dialog-setOption(QColorDialog::ShowAlphaChannel);// 显示透明度// 连接信号用户实时改变颜色时触发connect(dialog,QColorDialog::currentColorChanged,this,[](constQColorcolor){qDebug()实时颜色变化:color.name();});// 连接信号用户点击确定时触发connect(dialog,QColorDialog::colorSelected,this,[](constQColorcolor){qDebug()最终确认颜色:color.name();});dialog-exec();// 模态显示常用方法一览方法说明getColor()静态方法弹出对话框并返回颜色模态setCurrentColor(const QColor )设置当前颜色currentColor()获取当前选择的颜色selectedColor()获取最终确认的颜色点击确定后有效exec()模态显示阻塞open()非模态显示不阻塞setCustomColor(int index, QRgb color)设置自定义颜色最多16个常用选项QColorDialog::Option枚举值说明ShowAlphaChannel显示透明度Alpha通道滑块NoButtons不显示确定/取消按钮DontUseNativeDialog不使用系统原生对话框使用 Qt 自绘界面跨平台表现一致使用案例代码dialog.h代码#ifndefDIALOG_H#defineDIALOG_H#includeQDialog#includeQPushButton#includeQFrame#includeQColorDialog#includeQGridLayoutclassDialog:publicQDialog{Q_OBJECTpublic:Dialog(QWidget*parentnullptr);~Dialog();private:QGridLayout*glayout;QPushButton*colorButton;QFrame*colorFrame;privateslots:voiddisplayColorFunc();};#endif// DIALOG_Hdialog.cpp代码#includedialog.hDialog::Dialog(QWidget*parent):QDialog(parent){setWindowTitle(u8颜色对话框测试);glayoutnewQGridLayout(this);colorButtonnewQPushButton(u8请选择颜色);colorFramenewQFrame;colorFrame-setFrameShape(QFrame::Box);colorFrame-setAutoFillBackground(true);glayout-addWidget(colorButton,0,0);glayout-addWidget(colorFrame,1,0);connect(colorButton,SIGNAL(clicked()),this,SLOT(displayColorFunc()));}Dialog::~Dialog(){}voidDialog::displayColorFunc(){QColor colorValuesQColorDialog::getColor(Qt::red);if(colorValues.isValid()){colorFrame-setPalette(QPalette(colorValues));}}效果end~