首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Qt之QMessageBox

Qt之QMessageBox

作者头像
破晓的历程
发布2025-06-02 09:46:53
发布2025-06-02 09:46:53
4110
举报
文章被收录于专栏:破晓破晓

1.引言

在电脑上进行某些不可逆的操作时,电脑通常会发出弹窗,询问我们是否觉得继续此操作,我们可以选择继续或者说是取消。那么在Qt有没有可以实现类似功能的类呢?有的兄弟,有的!像这样的类我们有 QMessageBox

2.简单介绍

QMessageBox 是 Qt 中用于弹出 对话框消息 的类,常用于提示信息、警告、错误、确认等场景,是 Qt GUI 应用开发中非常常用的组件之一。

用于弹出一个模式对话框(模态窗口),显示消息给用户,并等待用户点击按钮(如“确定”、“取消”、“是”、“否”等)后再继续程序执行。

3.常见函数

Qt提供了很快捷的静态函数,使用起来非常的方便!

img
img

信息提示框(information)

代码语言:javascript
复制
QMessageBox::information(this, "标题", "这是一个信息提示框");

警告框(warning)

代码语言:javascript
复制
QMessageBox::warning(this,"警告","这是一个警告框");

错误框(critical)

代码语言:javascript
复制
QMessageBox::critical(this,"错误","出现了严重的错误");

提问框 (question))(带按钮选项)

代码语言:javascript
复制
    int ret = QMessageBox::question(nullptr, ("MyNoteBook Notice:"),
                                    ("The document has been modified.\n"
                                     "Do you want to save your changes?"),
                                    QMessageBox::Save | QMessageBox::Discard
                                    | QMessageBox::Cancel, /*按钮的属性*/
                                    QMessageBox::Save); /*默认按钮按下*/
    switch (ret)
    {
    case QMessageBox::Save:
        qDebug()<<"QMessageBox::Save";
        break;
    case QMessageBox::Discard:
        qDebug()<<"QMessageBox::Discard";
        break;
    case QMessageBox::Cancel:
        qDebug()<<"QMessageBox::Cancel";
        break;
     default:
        break;
    }

4.按钮类型(QMessage::StandardButton

按钮枚举值

显示内容

QMessageBox::Ok

“确定”

QMessageBox::Cancel

“取消”

QMessageBox::Yes

“是”

QMessageBox::No

“否”

QMessageBox::Abort

“终止”

QMessageBox::Retry

“重试”

QMessageBox::Ignore

“忽略”

可以多个按钮结合使用

代码语言:javascript
复制
`QMessageBox::Ok`|`QMessageBox::Cancel`

图标类型

含义

QMessageBox::NoIcon

无图标

QMessageBox::Information

信息图标(ℹ️)

QMessageBox::Warning

警告图标(⚠)

QMessageBox::Critical

错误图标(❌)

QMessageBox::Question

问号图标(❓)

5.分步骤实现弹窗

代码语言:javascript
复制
   // 创建一个 QMessageBox 消息框对象,用于提示用户是否保存文件
    QMessageBox Box;
    
    // 设置对话框窗口标题
    Box.setWindowTitle("MyNoteBook Notice:");

    // 设置对话框显示的文本(\n 表示换行)
    Box.setText("The document has been modified.\n"
                "Do you want to save your changes?");

    // 设置对话框上的按钮为“是”和“否”两个选项
    Box.setStandardButtons(QMessageBox::Yes | QMessageBox::No);

    // 设置默认选中的按钮为“是”
    Box.setDefaultButton(QMessageBox::Yes);

    // 弹出对话框并等待用户点击按钮,返回用户点击的按钮值(Yes 或 No)
    int ret = Box.exec();

    // 根据用户点击的按钮执行不同的操作
    switch (ret)
    {
    case QMessageBox::Yes:
        // 用户点击了“是”:你可以在这里编写保存文件的逻辑
        // 例如:saveFile();
        break;

    case QMessageBox::No:
        // 用户点击了“否”:可以选择不保存,直接退出或继续关闭程序
        break;

    default:
        // 理论上不会执行到这里,但为了安全起见保留 default 分支
        break;
    }

6.总结

本文我们学习了QMessageBox这一Qt中常见的类,明白了对话框是如何出现的,以及如何修改对话框的内容!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.引言
  • 2.简单介绍
  • 3.常见函数
  • 4.按钮类型(QMessage::StandardButton)
  • 5.分步骤实现弹窗
  • 6.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档