QMessageBox手动添加按钮并绑定按钮的信号
视频展示效果(结合代码看效果更佳哦,代码在最下面):
QMessageBox手动添加有重试效果的按钮
效果图:

点击详细文本之后展开如下图:
图标可选:
| QMessageBox::Critical | 错误图标 |
| QMessageBox::NoIcon | 没有图标 |
| QMessageBox::Question | 提问图标 |
| QMessageBox::Information | 消息图标 |
| QMessageBox::Warning | 警告图标 |
按钮角色可选:
| QMessageBox::InvalidRole | 无效;设置之后,这个按钮不会出现在弹框里面 |
| QMessageBox::AcceptRole | 确定;设置之后,对话框被接受,点击按钮后,弹窗会消失 |
| QMessageBox::RejectRole | 取消;设置之后,对话框被拒绝,点击按钮后,弹窗会消失 |
| QMessageBox::DestructiveRole | 不保存;设置之后,点击按钮后会导致破坏性更改并关闭弹窗 |
| QMessageBox::ActionRole | 激活 |
| QMessageBox::HelpRole | 帮助 |
| QMessageBox::YesRole | 是 |
| QMessageBox::NoRole | 否 |
| QMessageBox::ApplyRole | 应用 |
| QMessageBox::ResetRole | 重置 |
.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QMessageBox>
#include <QPushButton>
#include <QTimer>
#include <QDialog>
#define ETIME 10//每次重试的时间
namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();public slots:void slotRetry();void slotCountdown();void slotClose();void slotBtnClick(QAbstractButton* btn);private:Ui::MainWindow *ui;QMessageBox *m_mBox;QPushButton *m_retryBrn;QPushButton *m_closeBtn;QTimer *m_tmrRetry;int m_iCount;int iRetryCount;
};#endif // MAINWINDOW_H
.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{//ui->setupUi(this);m_tmrRetry = new QTimer(this);m_tmrRetry->setInterval(1000);connect(m_tmrRetry,SIGNAL(timeout()),this,SLOT(slotCountdown()));m_mBox = new QMessageBox();m_mBox->setIcon(QMessageBox::Critical);//设置图标m_mBox->setWindowTitle("错误");//设置对话框标题m_mBox->setText("测试说明");//设置副标题m_mBox->setInformativeText("今天是个好日子");//设置提示说明//m_mBox->setDetailedText("点个关注吧");//设置详细文本m_retryBrn = new QPushButton();m_closeBtn = new QPushButton();//添加按钮的方法//..1m_retryBrn = m_mBox->addButton("重试",QMessageBox::AcceptRole);m_closeBtn = m_mBox->addButton("关闭",QMessageBox::RejectRole);//..2// m_retryBrn->setText("重试");// m_closeBtn->setText("关闭");// m_mBox->addButton(m_retryBrn,QMessageBox::AcceptRole);// m_mBox->addButton(m_closeBtn,QMessageBox::RejectRole);//_________________________________________//绑定按钮槽函数的方法//..1connect(m_mBox,SIGNAL(buttonClicked(QAbstractButton*)),this,SLOT(slotBtnClick(QAbstractButton*)));//..2connect(m_retryBrn,SIGNAL(clicked(bool)),this,SLOT(slotRetry()));//关闭弹窗后触发的信号connect(m_mBox,SIGNAL(destroyed(QObject*)),this,SLOT(slotClose()));m_mBox->show();m_iCount=0;//已经重试了几次iRetryCount=0;//总共重试几次
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::slotRetry()
{m_mBox->show();//一定要show,不然点击按钮之后,弹窗就会消失,就看不到倒计时的效果了if(m_retryBrn->isEnabled()){m_retryBrn->setEnabled(false);m_closeBtn->setEnabled(false);}iRetryCount++;if(iRetryCount>3)//最多只重试3次{qDebug() << "重试次数已试完";m_mBox->close();m_mBox->deleteLater();return;}qDebug() << "重试方式一";m_tmrRetry->start();m_retryBrn->setText(QString("重试 %1").arg(ETIME));
}void MainWindow::slotCountdown()
{m_mBox->show();m_iCount++;int iTemp = ETIME - m_iCount;if(iTemp<=0){//可以在倒计时结束后做你想做的事m_tmrRetry->stop();m_retryBrn->setEnabled(true);m_closeBtn->setEnabled(true);m_iCount=0;iTemp=ETIME;}m_retryBrn->setText(QString("重试 %1").arg(iTemp));
}void MainWindow::slotClose()
{qDebug() << "弹窗已关闭";
}void MainWindow::slotBtnClick(QAbstractButton *btn)
{if(btn == m_retryBrn){qDebug() << "重试 方法2";}else if(btn == m_closeBtn){qDebug() << "关闭 方法2";}
}
相关文章:
QMessageBox手动添加按钮并绑定按钮的信号
视频展示效果(结合代码看效果更佳哦,代码在最下面): QMessageBox手动添加有重试效果的按钮效果图: 点击详细文本之后展开如下图: 图标可选: QMessageBox::Critical错误图标QMessageBox::NoIco…...
【C++进阶】位图和布隆过滤器
文章目录位图位图概念位图使用场景位图的结构构造setresettest完整代码布隆过滤器布隆过滤器概念布隆过滤器结构构造setresettest完整版代码位图 位图概念 所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用…...
Android开发-Android UI与布局
01 Android UI 1.1 UI 用户界面(User Interface,简称 UI,亦称使用者界面)是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。软件设计可分为两个部分:编码设计与UI设计。 1.2 Andr…...
在不丢失数据的情况下解锁锁定的 Android 手机的 4 种方法
尽管您可以使用指纹解锁手机,但大多数智能手机都需要 PIN 码、图案或字母数字代码作为主密码。如果您有一段时间没有输入手机密码,很容易忘记。正是由于这个原因,即使您打开了指纹解锁,大多数智能手机也会让您每天至少输入一次 PI…...
【11】核心易中期刊推荐——人工智能 | 图形图像处理
🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…...
Spring 中的事件发布与监听
主要代码在org.springframework.context,org.springframework.context.event包中 事件发布与监听主要包含以下角色: 事件:ApplicationEvent事件监听器:ApplicationListener SmartApplicationListener GenericApplicationListene…...
c++ 一些常识 2
前言 今天主要讲类相关概念。 构造和析构函数是否可以抛出异常 在构造函数中抛出异常,控制权会转出构造函数之外,对象的析构函数不会被调用,造成内存泄漏。 如果析构函数中抛出异常,而且没有在当地捕捉,析构函数便执…...
用嘴写代码?继ChatGPT和NewBing之后,微软又开始整活了,Github Copilot X!
用嘴写代码?继ChatGPT和NewBing之后,微软又开始整活了,Github Copilot X! AI盛行的时代来临了,在这段时间,除了爆火的GPT3.5后,OpenAI发布了GPT4版本,同时微软也在Bing上开始加入了A…...
3分钟阐述这些年我的 接口自动化测试 职业生涯经验分享
接口自动化测试学习教程地址:https://www.bilibili.com/video/BV1914y1F7Bv/ 你好,我是凡哥。 很高兴能够分享我的接口自动化测试经验和心得体会。在我目前的职业生涯中,接口自动化测试是我经常进行的一项任务。通过不断地学习和实践…...
十大Python可视化工具,太强了
今天介绍Python当中十大可视化工具,每一个都独具特色,惊艳一方。 Matplotlib Matplotlib 是 Python 的一个绘图库,可以绘制出高质量的折线图、散点图、柱状图、条形图等等。它也是许多其他可视化库的基础。 import matplotlib.pyplot as p…...
五.ElasticSearch的基础+实战
五.ElasticSearch的基础+实战 1.Elasticsearch的是什么? 2.Elasticsearch的作用是什么? 3.Elasticsearch的核心思想? 4.Elasticsearch启动与简单使用 5.kibana结合elasticsearch实现简单的增删改查 6.elasticsearch安装中文分词器 7.elasticsearch结合springboot开发…...
Oracle的学习心得和知识总结(十三)|Oracle数据库Real Application Testing之Database Reply实操(一)
目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《Oracle Database SQL Language Reference》 2、参考书籍:《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Guid…...
CAD外部参照如何重新定位?CAD外部参照重定位步骤
CAD外部参照如何重新定位?这个问题并不算是一个常见的问题,但偶尔也会遇到,今天小编就来给大家简单介绍一下浩辰CAD软件中CAD外部参照重定位的操作步骤,一起来看看吧! CAD外部参照重定位步骤: 浩辰CAD软件…...
11. C#高级进阶
一、C# 异常处理 在 C# 中,异常是在程序运行出错时引发的,所有异常都派生自 System.Exception 类。异常处理就是处理运行时错误的过程,通过异常处理可以使程序在发生错误时保持正常运行。 C# 中的异常处理基于四个关键字构建,分别…...
网络编程套接字( TCP协议通讯流程)
目录 1、绑定失败问题 2、TCP协议通讯流程 三次握手的过程 数据传输的过程 四次挥手的过程 TCP和UDP对比 1、绑定失败问题 当我们测试网络代码时,先将服务端绑定8080端口运行,然后运行客户端,并让客户端连接当前服务器: 当有客户…...
WPF毛笔字实现过程
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
MHA实现mysql数据库高可用
目录 MHA原理 MHA工具包 MHA实现mysql高可用实战 MHA原理 ①MHA利用 SELECT 1 As Value 指令判断master服务器的健康性,一旦master 宕机,MHA 从宕机崩溃的master保存二进制日志事件(binlog events) ②识别含有最新更新的slave ③应用差异的中继日志&…...
leetcode每日一题:55. 跳跃游戏
系列:贪心算法 语言:java 题目来源:Leetcode55. 跳跃游戏 题目 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1: 输…...
【C++】map 和 set
文章目录一、关联式容器与键值对1、关联式容器2、键值对 pair3、树形结构的关联式容器二、set1、set 的介绍2、set 的使用三、multiset四、map1、map 的介绍2、map 的使用五、multimap一、关联式容器与键值对 1、关联式容器 在C初阶的时候,我们已经接触了 STL 中的…...
基于SpringBoot的酒店管理系统
系统环境 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/i…...
APKMirror客户端:安卓应用安全下载与管理的革新方案
APKMirror客户端:安卓应用安全下载与管理的革新方案 【免费下载链接】APKMirror 项目地址: https://gitcode.com/gh_mirrors/ap/APKMirror 在安卓应用获取的过程中,用户常常面临两难选择:官方应用商店的更新滞后与第三方平台的安全隐…...
【仅限首批内测用户开放】Polars 2.0清洗性能调优白皮书:含12个未公开API、3类CPU亲和性绑定策略
第一章:Polars 2.0大规模数据清洗技巧概览Polars 2.0 在性能、内存效率与API一致性上实现重大升级,为TB级结构化数据清洗提供了低延迟、高吞吐的原生解决方案。其基于Arrow 15的列式引擎、零拷贝切片能力及多线程LazyFrame执行计划优化,使复杂…...
工业能量:05.UPS如何救场(啤酒厂断电救命案例)
05.UPS如何救场(啤酒厂断电救命案例) 在工厂里,最昂贵的不是设备,而是“停机一秒的代价”。 前四期咱们把开关电源、浪涌、冗余聊了个遍,今天终于轮到大救星——UPS出场了!直接上个真事儿,啤酒厂的,让你们听完直呼“原来它这么猛”! 你以为啤酒厂停电就是灯黑了,大家…...
Jailer命令行大师课:自动化数据库子集化的10个技巧
Jailer命令行大师课:自动化数据库子集化的10个技巧 【免费下载链接】Jailer Database Subsetting and Relational Data Browsing Tool. 项目地址: https://gitcode.com/gh_mirrors/ja/Jailer Jailer是一款强大的开源数据库子集化工具,专注于从生产…...
AI头像生成器新手教程:5个常用风格关键词+3类背景模板Prompt速查表
AI头像生成器新手教程:5个常用风格关键词3类背景模板Prompt速查表 1. 快速了解AI头像生成器 AI头像生成器是一个帮你设计专属头像创意的智能工具。你只需要简单描述想要的头像风格,它就能生成详细的描述文案,这些文案可以直接用在Midjourne…...
SenseVoiceSmall实战案例:如何用AI分析会议录音中的情绪变化
SenseVoiceSmall实战案例:如何用AI分析会议录音中的情绪变化 1. 会议录音分析的痛点与解决方案 在日常工作中,会议录音分析一直是个耗时费力的任务。传统方法需要人工反复听取录音,不仅效率低下,还容易遗漏关键信息。特别是会议…...
Java异常体系全景解析:从Checked与Unchecked的本质区别到最佳实践
Java异常体系全景解析:从Checked与Unchecked的本质区别到最佳实践在Java的浩瀚生态中,异常处理机制无疑是构建健壮、可靠应用程序的基石。它不仅仅是简单的错误捕获,更是一套精密的契约系统,决定了程序在遭遇非预期状态时如何“表…...
OpenClaw多语言支持:GLM-4.7-Flash跨语言任务处理
OpenClaw多语言支持:GLM-4.7-Flash跨语言任务处理 1. 为什么需要多语言自动化助手 上周我需要整理一份包含中英日三语的会议纪要时,突然意识到一个问题:传统自动化工具往往只擅长处理单一语言环境。当我尝试用Python脚本批量处理日语邮件时…...
Bidili Generator效果展示:宠物肖像生成——毛发细节+神态捕捉实测
Bidili Generator效果展示:宠物肖像生成——毛发细节神态捕捉实测 1. 引言:当AI遇见宠物肖像 你有没有想过,给自家宠物拍一张专业级的肖像照?不是那种随手一拍的生活照,而是能捕捉到它们独特神态、展现每一根毛发细节…...
__attribute__((unused))的妙用:如何优雅地处理未使用的变量与参数
1. 为什么我们需要__attribute__((unused)) 在C/C开发中,编译器警告就像一位严格的代码审查员,时刻提醒我们可能存在的问题。但有时候,我们确实需要定义一些暂时不使用的变量或参数,比如为了保持接口兼容性,或者在某些…...
