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中常见的类,明白了对话框是如何出现的,以及如何修改对话框的内容!

相关推荐
牵牛老人8 分钟前
Qt C++ 复杂界面处理:巧用覆盖层突破复杂界面处理难题之一
数据库·c++·qt
胡耀超9 分钟前
3.Python高级数据结构与文本处理
服务器·数据结构·人工智能·windows·python·大模型
云:鸢10 分钟前
C语言链表设计及应用
c语言·开发语言·数据结构·链表
离越词1 小时前
C++day8作业
开发语言·c++·windows
℃CCCC1 小时前
请求库-axios
开发语言·华为·网络请求·harmonyos·deveco studio·axios请求·arkts编程
ling__i1 小时前
java day18
java·开发语言
矛取矛求1 小时前
日期类的实现
开发语言·c++·算法
非ban必选1 小时前
netty-scoket.io路径配置
java·服务器·前端
ChindongX1 小时前
CString(MFC/ATL 框架)和 QString(Qt 框架)
qt·mfc
大翻哥哥2 小时前
Python 2025:AI工程化与智能代理开发实战
开发语言·人工智能·python