Qt QMessageBox详解
文章目录
- 一.QMessageBox介绍
- 枚举
- 属性
- 函数
- 二.QMessageBox的用法
- 1.导入QMessage库
- 2.弹窗提示
- 3.提供选项的弹窗提示
- 4.作为提示,报警,报错提示窗口
一.QMessageBox介绍
文本消息显示框(message box)向用户发出情况警报信息并进一步解释警报或向用户提问,以及可选的详细文本以在用户请求时提供更多数据。
枚举
| 枚举 | 枚举值 |
|---|---|
| enum | ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, …, ResetRole } |
| enum | Icon { NoIcon, Question, Information, Warning, Critical } |
| enum | StandardButton { Ok, Open, Save, Cancel, Close, …, ButtonMask } |
| flags | StandardButtons |
属性
| 属性名称 | 类型 |
|---|---|
| detailedText | QString |
| standardButtons | StandardButtons |
| icon | Icon |
| iconPixmap | QPixmap |
| informativeText | QString |
| text | QString |
| textFormat | Qt::TextFormat |
| textInteractionFlags | Qt::TextInteractionFlags |
函数
| 返回值 | 函数原型 | 说明 |
|---|---|---|
| QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint) | |
| QMessageBox(QWidget *parent = nullptr) | 构造函数 | |
| virtual | ~QMessageBox() | 析构函数 |
| void | addButton(QAbstractButton *button, QMessageBox::ButtonRole role) | 添加按钮到消息框中 |
| QPushButton * | addButton(const QString &text, QMessageBox::ButtonRole role) | 添加按钮到消息框中 |
| QPushButton * | addButton(QMessageBox::StandardButton button) | 添加按钮到消息框中 |
| QAbstractButton * | button(QMessageBox::StandardButton which) const | 返回与标准按钮对应的指针,如果此消息框中不存在标准按钮,则返回nullptr |
| QMessageBox::ButtonRole | buttonRole(QAbstractButton *button) const | 返回指定按钮的按钮角色。如果按钮为nullptr或尚未添加到消息框,则此函数返回InvalidRole。 |
| QList<QAbstractButton *> | buttons() const | 返回已添加到消息框中的所有按钮的列表。 |
| QCheckBox * | checkBox() const | 返回对话框上显示的复选框。如果未设置任何复选框,则为nullptr。 |
| QAbstractButton * | clickedButton() const | 返回用户单击的按钮,如果用户按Esc键且未设置转义按钮,则返回nullptr。 |
| QPushButton * | defaultButton() const | 返回应该是消息框默认按钮的按钮。如果未设置默认按钮,则返回nullptr。 |
| QString | detailedText() const | 保存要显示在详细信息区域中的文本。 |
| QAbstractButton * | escapeButton() const | 返回按下转义时激活的按钮。 |
| QMessageBox::Icon | icon() const | 保存消息框的图标 |
| QPixmap | iconPixmap() const | 保存当前图标 |
| QString | informativeText() const | 包含为消息提供更完整描述的信息性文本 |
| void | open(QObject *receiver, const char *member) | 打开对话框并将其 finished()或 buttonClicked()信号连接到接收器和成员指定的插槽。如果slot-in成员的第一个参数有一个指针,则连接到 buttonClicked(),否则连接到finished()。 |
| void | removeButton(QAbstractButton *button) | 从按钮框中删除按钮而不删除它。 |
| void | setCheckBox(QCheckBox *cb) | 设置消息对话框上的复选框cb。消息框获取复选框的所有权。参数cb可以是nullptr,以从消息框中删除现有复选框。 |
| void | setDefaultButton(QPushButton *button) | 将消息框的默认按钮设置为按钮。 |
| void | setDefaultButton(QMessageBox::StandardButton button) | 将消息框的默认按钮设置为按钮。 |
| void | setDetailedText(const QString &text) | 保存要显示在详细信息区域中的文本。 |
| void | setEscapeButton(QAbstractButton *button) | 将按下Escape键时激活的按钮设置为按钮。 |
| void | setEscapeButton(QMessageBox::StandardButton button) | 将按下Escape键时激活的按钮设置为按钮。 |
| void | setIcon(QMessageBox::Icon) | 保存消息框的图标 |
| void | setIconPixmap(const QPixmap &pixmap) | 保存消息框的图标 |
| void | setInformativeText(const QString &text) | 保存要显示的消息框文本 |
| void | setStandardButtons(QMessageBox::StandardButtons buttons) | 根据文本格式设置(QMessageBox::textFormat),文本将被解释为纯文本或富文本。默认设置为 Qt::AutoText,,即消息框将尝试自动检测文本的格式。 |
| void | setText(const QString &text) | 保存要显示的消息框文本 |
| void | setTextFormat(Qt::TextFormat format) | 保存消息框显示的文本格式 |
| void | setTextInteractionFlags(Qt::TextInteractionFlags flags) | |
| void | setWindowModality(Qt::WindowModality windowModality) | |
| void | setWindowTitle(const QString &title) | |
| QMessageBox::StandardButton | standardButton(QAbstractButton *button) const | 返回与给定按钮对应的标准按钮枚举值,如果给定按钮不是标准按钮,则返回NoButton。 |
| QMessageBox::StandardButtons | standardButtons() const | 返回与给定按钮对应的标准按钮枚举值,如果给定按钮不是标准按钮,则返回NoButton。 |
| QString | text() const | 保存要显示的消息框文本 |
| Qt::TextFormat | textFormat() const | 保存消息框显示的文本格式 |
| Qt::TextInteractionFlags | textInteractionFlags() const |
二.QMessageBox的用法
1.导入QMessage库
#include <QMessageBox>
2.弹窗提示
构造QMessageBox的实例,设置所需显示的消息,然后调用exec()来显示消息。用户必须单击“确定”按钮以关闭消息框。GUI的其余部分将被阻止,直到消息框被关闭。
QMessageBox msgBox;
msgBox.setText(u8"你好~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
msgBox.exec();

3.提供选项的弹窗提示
一个比仅仅提醒用户事件更好的方法是询问用户该怎么做。将问题存储在信息性文本属性中,并将标准按钮属性设置为所需的按钮集作为用户响应集。通过使用位或运算符组合StandardButtons中的值来指定按钮。按钮的显示顺序取决于平台。例如,在Windows上,“保存”显示在“取消”的左侧,而在Mac OS上,顺序相反。要向用户提供更多信息以帮助他回答问题,通过setDetailedText设置详细文本属性。如果设置了详细文本属性,则显示详细信息按钮。exec()槽返回单击的按钮的StandardButtons值。
QMessageBox msgBox;
msgBox.setText(u8"该文档已被修改.");
msgBox.setDetailedText(u8"这里是详细的提示信息");
msgBox.setInformativeText(u8"是否要保存你的修改?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
int ret = msgBox.exec();switch (ret) {case QMessageBox::Save:qDebug() << "save";break;case QMessageBox::Discard:qDebug() << "Discard";break;case QMessageBox::Cancel:qDebug() << "Cancel";break;default:qDebug() << "default";break;
}

4.作为提示,报警,报错提示窗口
int ret = QMessageBox::information(this, tr(u8"信息提示"),tr(u8"该文档已被修改.\n"u8"是否要保存你的修改?"),QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::Help);




对于窗口的类型,有以下几种可以选择:
| 内容 | 值 | 说明 |
|---|---|---|
QMessageBox::NoIcon | 0 | the message box does not have any icon. |
QMessageBox::Question | 4 | an icon indicating that the message is asking a question. |
QMessageBox::Information | 1 | an icon indicating that the message is nothing out of the ordinary. |
QMessageBox::Warning | 2 | an icon indicating that the message is a warning, but can be dealt with. |
QMessageBox::Critical | 3 | an icon indicating that the message represents a critical problem. |
对于窗口中的按钮,有以下几种可以选择:
| 内容 | 值 | 说明 |
|---|---|---|
QMessageBox::Ok | 0x00000400 | An “OK” button defined with the AcceptRole. |
QMessageBox::Open | 0x00002000 | An “Open” button defined with the AcceptRole. |
QMessageBox::Save | 0x00000800 | A “Save” button defined with the AcceptRole. |
QMessageBox::Cancel | 0x00400000 | A “Cancel” button defined with the RejectRole. |
QMessageBox::Close | 0x00200000 | A “Close” button defined with the RejectRole. |
QMessageBox::Discard | 0x00800000 | A “Discard” or “Don’t Save” button, depending on the platform, defined with the DestructiveRole. |
QMessageBox::Apply | 0x02000000 | An “Apply” button defined with the ApplyRole. |
QMessageBox::Reset | 0x04000000 | A “Reset” button defined with the ResetRole. |
QMessageBox::RestoreDefaults | 0x08000000 | A “Restore Defaults” button defined with the ResetRole. |
QMessageBox::Help | 0x01000000 | A “Help” button defined with the HelpRole. |
QMessageBox::SaveAll | 0x00001000 | A “Save All” button defined with the AcceptRole. |
QMessageBox::Yes | 0x00004000 | A “Yes” button defined with the YesRole. |
QMessageBox::YesToAll | 0x00008000 | A “Yes to All” button defined with the YesRole. |
QMessageBox::No | 0x00010000 | A “No” button defined with the NoRole. |
QMessageBox::NoToAll | 0x00020000 | A “No to All” button defined with the NoRole. |
QMessageBox::Abort | 0x00040000 | An “Abort” button defined with the RejectRole. |
QMessageBox::Retry | 0x00080000 | A “Retry” button defined with the AcceptRole. |
QMessageBox::Ignore | 0x00100000 | An “Ignore” button defined with the AcceptRole. |
QMessageBox::NoButton | 0x00000000 | An invalid button. |
相关文章:
Qt QMessageBox详解
文章目录一.QMessageBox介绍枚举属性函数二.QMessageBox的用法1.导入QMessage库2.弹窗提示3.提供选项的弹窗提示4.作为提示,报警,报错提示窗口一.QMessageBox介绍 文本消息显示框(message box)向用户发出情况警报信息并进一步解释警报或向用户提问&…...
Flutter之beamer路由入门指南
beamer路由入门指南 前言使用方法1、路由配置方式1路由配置方式2路由跳转测试现象前言 Beamer是一个很好用的路由组件,本文以beamer1.5.0版本进行说明,前面博主也介绍了其他路由组件 Flutter实战之go_router路由组件入门指南 、 Flutter之Fluro路由组件入门指南 Flutter之Ge…...
「基础篇」机器学习概览
文章目录1. 什么是机器学习2. 引入机器学习3. 应用场景4. 机器学习分类4.1. 有无人类监督4.2. 是否增量学习4.3. 泛化方式5. 主要挑战6. 测试与验证1. 什么是机器学习 机器学习(Machine Learning,ML)是一个研究领域,让计算机无需…...
揭秘可视化图探索工具 NebulaGraph Explore 是如何实现图计算的
前言 在可视化图探索工具 NebulaGraph Explorer 3.1.0 版本中加入了图计算工作流功能,针对 NebulaGraph 提供了图计算的能力,同时可以利用工作流的 nGQL 运行能力支持简单的数据读取,过滤及写入等数据处理功能。 本文将简单分享下 NebulaGr…...
移动架构43_什么是Jetpack
Android移动架构汇总 文章目录一 Android 开发框架演变1 MVC2 MVP3 MVVM二 什么是JetPack三 如何构建支持Jetpack项目一 Android 开发框架演变 1 MVC Model-View-Controller,模型-视图-控制器,Model负责数据管理,View负责UI显…...
TiDB的分布式事务原理探究
事务开启 获取全局授时作为startTS构建一个tikvTxn对象(包括snapshot)。 事务写 txn.Set方法本质上将kv值写入了一个内存缓存(即kv/memdb_buffer.go中的memDbBuffer)中。该内存kv数据库利用的是golevel提供的功能。 事务回滚 直接将tikvTxn的valid字段…...
【C语言】函数指针和指针函数
文章目录[TOC](文章目录)前言概述函数指针定义:使用:回调函数指针函数前言 今天学一下函数指针 提示:以下是本篇文章正文内容,下面案例可供参考 概述 函数指针:是一个指向函数的指针,在内存空间中存放的…...
Nodejs中npx简介和作用
一、npx简介npm从5.25.2版开始,增加了 npx 命令。方便了我在项目中使用全局包。二、安装Node安装后自带npm模块,可以直接使用npx命令。如果不能使用用,就要手动安装一下。npm install -g npx三、使用npx想要解决的主要问题,就是调…...
Matplotlib精品学习笔记001——绘制3D图形详解+实例讲解
3D图片更生动,或许在时间序列数据的展示上更胜一筹 想法: 学习3D绘图的想法来自科研绘图中。我从事的专业是古植物学,也就是和植物化石打交道。化石有三大信息:1.物种信息,也就是它的分类学价值;2.时间信息…...
学习ifconfig实战技巧,成为网络管理高手
文章目录前言一. ifconfig 命令介绍二. 语法格式及常用选项三. 参考案例3.1 显示网络设备信息3.2 启动和关闭指定的网卡3.3 对指定的网卡设备执行修改IP地址操作3.4 启动和关闭ARP协议3.5 使用ifconfig添加网卡总结前言 大家好,又见面了,我是沐风晓月&a…...
day38|70. 爬楼梯(进阶)、322. 零钱兑换、279.完全平方数
70. 爬楼梯(进阶) 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2…...
SpringBoot全局异常处理
一、目的 当客户端/前端向服务端发送一个请求后,这个请求并不是每次都能完全正确的处理,比如出现一些资源不存在、参数错误或者内部错误等信息的时候,就需要将异常反馈给客户端或者前端。那么这就需要程序有完整的异常处理机制。 在 Java 中所…...
SpringBoot异常处理
目录 一、 错误处理 1. 默认规则 2. 定制错误处理逻辑 二、自定义异常处理 1. 实现 ErrorController 2. RestControllerAdvice/ControllerAdvice ExceptionHandler 实现自定义异常 3. 新建 UserController.class 测试 3 种不同异常的处理 4. 最终效果如下 补充 1. 参…...
《C++ Primer Plus》(第6版)第8章编程练习
《C Primer Plus》(第6版)第8章编程练习《C Primer Plus》(第6版)第8章编程练习1. 打印字符串2. CandyBar3. 将string对象的内容转换为大写4. 设置并打印字符串5. max5()6. maxn()7. SumArray()《C Primer Plus》(第6版…...
RAD Studio 11.3 Alexandria Crack
RAD Studio 11.3 Alexandria Crack 瞄准最新平台版本-此版本增加了对Android 13和Apple macOS Ventura的官方支持。它还支持Ubuntu 22 LTS和Microsoft Windows Server 2022。 使用生物特征认证-New为FireMonkey移动应用程序提供了新的移动生物特征认证组件。 部署嵌入式InterBa…...
Stm32 iic 协议使用
/* 第1个参数为I2C操作句柄 第2个参数为从机设备地址 第3个参数为从机寄存器地址 第4个参数为从机寄存器地址长度 第5个参数为发送的数据的起始地址 第6个参数为传输数据的大小 第7个参数为操作超时时间 */ HAL_I2C_Mem_Write(&hi2c2,salve_add,0,0,PA_BUFF,sizeof(PA_BUFF…...
Malware Dev 02 - Windows SDDL 后门利用之 SCManager
写在最前 如果你是信息安全爱好者,如果你想考一些证书来提升自己的能力,那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里: https://discord.gg/9XvvuFq9Wb我拥有 OSCP,OSEP,OSWE,OSED&…...
每日一题29——山峰数组的顶部
符合下列属性的数组 arr 称为 山峰数组(山脉数组) : arr.length > 3 存在 i(0 < i < arr.length - 1)使得: arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i1] > ... &g…...
Linux- 系统随你玩之--好用到炸裂的系统级监控、诊断工具
文章目录1、前言2、lsof介绍2.1、问题来了: 所有用户都可以采用该命令吗?3、 服务器安装lsof3.1、安装3.2、检查安装是否正常。4、lsof 命令4.1、常用功能选项4.2、输出内容4.2.1 、FD和 TYPE列5、 lsof 命令实操常见用法6 、常用组合命令7、 结语1、前言…...
第十三节 继承
什么是继承? java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立父子关系。 public class Student extends People{} student为子类(派生类),people为父类(基类或者超类…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
