布局对话框
QColorDialog(颜色对话框)
QColorDialog是 Qt 框架中标准的颜色选择对话框组件,隶属于QDialog子类,专为图形界面中选择颜色设计,支持跨平台(Windows/macOS/Linux)、原生系统样式适配、多颜色模式(RGB/HSV/CMYK)和 Alpha 透明度通道,是 Qt 界面开发中最常用的对话框之一。静态方法
QColorDialog::getColor()(最常用)Qt 封装了静态方法
getColor(),一键弹出模态颜色对话框,无需手动创建对象,返回选中的QColor(用户取消则返回无效QColor)。QColor color = QColorDialog::getColor(Qt::red,this , "选择背景颜色"); if(color.isValid()){ frame->setPalette(QPalette(color)); }
QFrontDialog(字体对话框)
QFontDialog是 Qt 提供的标准字体选择对话框,隶属于QDialog子类,用于让用户选择字体(如宋体 / 微软雅黑)、字号(12/14/16px)、字体样式(粗体 / 斜体 / 下划线)、字符间距等,跨平台适配系统原生字体面板样式,是 Qt 界面中设置文本字体的核心组件。静态方法
QFontDialog::getFont()(最常用)一键弹出模态字体对话框,返回选中的
QFont,用户取消则返回无效字体必须传指针,用于判断用户是否点击 “确定”(
QColorDialog用isValid(),QFontDialog用布尔类型指针,这是核心区别)void Dialog::dispFontFunc() { bool ok; QFont font = QFontDialog::getFont(&ok); if(ok){ lineEdit->setFont(font); } }
QInputDialog(输入对话框)
QInputDialog是 Qt Widgets 模块中封装度极高的 “即插即用” 输入对话框,本质是 Qt 对 “输入控件 + 对话框容器 + 交互逻辑” 的一层封装,核心目标是让开发者用最少的代码实现 “获取单个输入值” 的需求。QInputDialog::getText()
static QString getText( QWidget *parent, // 父窗口( nullptr 则居中屏幕) const QString &title, // 对话框标题 const QString &label, // 输入提示文本 QLineEdit::EchoMode echo = QLineEdit::Normal, // 回显模式 const QString &text = QString(),// 默认输入值 bool *ok = nullptr, // 确认状态指针 Qt::WindowFlags flags = Qt::Widget, // 窗口标志(如置顶、无边框) Qt::InputMethodHints inputMethodHints = Qt::ImhNone // 输入法提示 );QInputDialog::getInt()
static int getInt( QWidget *parent, const QString &title, const QString &label, int value = 0, // 默认值 int minValue = -2147483647, // 最小值(默认int最小值) int maxValue = 2147483647, // 最大值(默认int最大值) int step = 1, // 步长(上下箭头/滚轮增量) bool *ok = nullptr, Qt::WindowFlags flags = Qt::Widget );QInputDialog::getDouble()
static double getDouble( QWidget *parent, const QString &title, const QString &label, double value = 0.0, // 默认值 double minValue = -2147483647.0,// 最小值 double maxValue = 2147483647.0, // 最大值 int decimals = 1, // 显示的小数位数 bool *ok = nullptr, Qt::WindowFlags flags = Qt::Widget );QInputDialog::getItem()
static QString getItem( QWidget *parent, const QString &title, const QString &label, const QStringList &items, // 下拉选项列表 int current = 0, // 默认选中索引(从0开始) bool editable = true, // 选项是否可编辑 bool *ok = nullptr, Qt::WindowFlags flags = Qt::Widget, Qt::InputMethodHints inputMethodHints = Qt::ImhNone );示例:
void Dialog::modifyStudentNoFunc() { bool ok = false; QString str = QInputDialog::getText(this, "标准输入对话框", "请输入学号:", QLineEdit::Normal, inputStudentNoLineEdit->text(), &ok); if(ok){ qDebug() << str; inputStudentNoLineEdit->setText(str); } } void Dialog::modifyStudentSexFunc() { bool ok = false; QStringList lists; lists << "男" << "女";//往lists里添加元素 QString sex = QInputDialog::getItem(this, "标准输入对话框", "请选择性别:", lists, 0, false, &ok); if(ok){ inputStudentSexLineEdit->setText(sex); } } void Dialog::modiffStudentScoreFunc() { bool ok = false; double score = QInputDialog::getDouble(this, "标准输入对话框", "请输入分数:", 60, 0,//初始值 100, 1,//步长 &ok); if(ok){ inputStudentScoreLineEdit->setText(QString::number(score, 'f', 3)); } }
QMessageBox(消息对话框)
QMessageBox是 Qt Widgets 模块中封装度极高的 “即插即用” 消息对话框类,专为快速展示提示、警告、错误、询问等消息设计,无需手动构建对话框 + 按钮 + 布局,是 Qt 开发中 “人机交互反馈” 的核心工具常用的消息对话框;
QMessage::waring()static StandardButton warning( QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );QMessage::information()
static StandardButton information( QWidget *parent, // 父窗口(nullptr 居中屏幕) const QString &title, // 对话框标题 const QString &text, // 核心消息文本 StandardButtons buttons = Ok, // 显示的按钮(默认仅 OK) StandardButton defaultButton = NoButton // 默认聚焦的按钮 );QMessage::critical()
static StandardButton critical( QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );自定义消息对话框
void Dialog::customMeg() { QMessageBox messbox;//创建对话框 messbox.setWindowTitle("自定义消息框");//设置对话框标题 QPushButton *yes = messbox.addButton("确认", QMessageBox::YesRole); //增加按钮 QPushButton *no = messbox.addButton("取消", QMessageBox::ActionRole); messbox.exec();//启动对话框 //判断点击类型 if(messbox.clickedButton() == yes){ qDebug() << "我点击了yes"; } }

浙公网安备 33010602011771号