Qt之QMessageBox


欢迎来到 破晓的历程的 博客

⛺️不负时光,不负己✈️


文章目录

1.引言

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

2.简单介绍

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

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

3.常见函数

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

信息提示框(information)

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

警告框(warning)

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

错误框(critical)

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

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

cpp 复制代码
    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 "忽略"

可以多个按钮结合使用

cpp 复制代码
`QMessageBox::Ok`|`QMessageBox::Cancel`
图标类型 含义
QMessageBox::NoIcon 无图标
QMessageBox::Information 信息图标(ℹ️)
QMessageBox::Warning 警告图标(⚠)
QMessageBox::Critical 错误图标(❌)
QMessageBox::Question 问号图标(❓)

5.分步骤实现弹窗

c++ 复制代码
   // 创建一个 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中常见的类,明白了对话框是如何出现的,以及如何修改对话框的内容!

相关推荐
踢足球09295 分钟前
寒假打卡:2026-2-7
java·开发语言·javascript
石去皿7 分钟前
【嵌入式就业10】Linux内核深度解析:从启动流程到驱动框架的工业级实践
linux·运维·服务器
Wpa.wk10 分钟前
接口自动化 - 多环境统一文件配置 +多响应统一转换处理
运维·服务器·测试工具·自动化·接口自动化·统一配置
Trouvaille ~11 分钟前
【Linux】应用层协议设计实战(二):Jsoncpp序列化与完整实现
linux·运维·服务器·网络·c++·json·应用层
薛定谔的猫喵喵29 分钟前
基于PyQt5的视频答题竞赛系统设计与实现
开发语言·qt·音视频
岱宗夫up34 分钟前
Python 数据分析入门
开发语言·python·数据分析
tritone35 分钟前
使用阿贝云免费云服务器学习Vagrant,是一次非常顺畅的体验。作为一名开发者
服务器·学习·vagrant
wangjialelele36 分钟前
Linux中的进程管理
java·linux·服务器·c语言·c++·个人开发
码界筑梦坊36 分钟前
325-基于Python的校园卡消费行为数据可视化分析系统
开发语言·python·信息可视化·django·毕业设计
多恩Stone40 分钟前
【RoPE】Flux 中的 Image Tokenization
开发语言·人工智能·python