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

相关推荐
FL16238631293 小时前
[C#][winform]基于yolov8的水表读数检测与识别系统C#源码+onnx模型+评估指标曲线+精美GUI界面
开发语言·yolo·c#
cnxy1886 小时前
围棋对弈Python程序开发完整指南:步骤1 - 棋盘基础框架搭建
开发语言·python
程序员-周李斌7 小时前
Java 死锁
java·开发语言·后端
Xの哲學7 小时前
Linux多级时间轮:高精度定时器的艺术与科学
linux·服务器·网络·算法·边缘计算
FlourishingMind7 小时前
蓝牙授时CTS (Current Time Service)、PTP、NTP
运维·服务器·网络
QT 小鲜肉8 小时前
【Linux命令大全】001.文件管理之mmove命令(实操篇)
linux·服务器·前端·chrome·笔记
JasmineWr8 小时前
CompletableFuture相关问题
java·开发语言
零雲8 小时前
java面试:知道java的反射机制吗
java·开发语言·面试
Jeremy爱编码8 小时前
实现 Trie (前缀树)
开发语言·c#
MaximusCoder8 小时前
Linux信息收集Command
运维·服务器·经验分享