当前位置: 首页 > news >正文

QT 中 QProgressDialog 进度条窗口 备查

基础API

//两个构造函数
QProgressDialog::QProgressDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());QProgressDialog::QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent = nullptr,Qt::WindowFlags f = Qt::WindowFlags());
参数:- labelText: 对话框中显示的提示信息- cancelButtonText: 取消按钮上显示的文本信息- minimum: 进度条最小值- maximum: 进度条最大值- parent: 当前窗口的父对象- f: 当前进度窗口的flag属性, 使用默认属性即可, 无需设置
*/// 设置取消按钮显示的文本信息
[slot] void QProgressDialog::setCancelButtonText(const QString &cancelButtonText);// 公共成员函数和槽函数
QString QProgressDialog::labelText() const;
void QProgressDialog::setLabelText(const QString &text);// 得到进度条最小值
int QProgressDialog::minimum() const;
// 设置进度条最小值
void QProgressDialog::setMinimum(int minimum);// 得到进度条最大值
int QProgressDialog::maximum() const;
// 设置进度条最大值
void QProgressDialog::setMaximum(int maximum);// 设置进度条范围(最大和最小值)
[slot] void QProgressDialog::setRange(int minimum, int maximum);// 得到进度条当前的值
int QProgressDialog::value() const;
// 设置进度条当前的值
void QProgressDialog::setValue(int progress);bool QProgressDialog::autoReset() const;
// 当value() = maximum()时,进程对话框是否调用reset(),此属性默认为true。
void QProgressDialog::setAutoReset(bool reset);bool QProgressDialog::autoClose() const;
// 当value() = maximum()时,进程对话框是否调用reset()并且隐藏,此属性默认为true。
void QProgressDialog::setAutoClose(bool close);// 判断用户是否按下了取消键, 按下了返回true, 否则返回false
bool wasCanceled() const;// 重置进度对话框。wascancelled()变为true,直到进程对话框被重置。进度对话框被隐藏。
[slot] void QProgressDialog::cancel();
// 重置进度对话框。如果autoClose()为真,进程对话框将隐藏。
[slot] void QProgressDialog::reset();   // 当单击cancel按钮时,将发出此信号。默认情况下,它连接到cancel()槽。
[signal] void QProgressDialog::canceled();// 设置窗口的显示状态(模态, 非模态)
void QWidget::setWindowModality(Qt::WindowModality windowModality);
参数:Qt::NonModal  -> 非模态Qt::WindowModal	-> 模态, 阻塞父窗口Qt::ApplicationModal -> 模态, 阻塞应用程序中的所有窗口

小案例

效果

在这里插入图片描述

思路
    //创建出进度条对话框窗口对象QProgressDialog *progress = new QProgressDialog("正在导出...", "打开Excel导出目录", 0, 100, this);//初始化显示进度条窗口标题 (从QWidgeet所继承)progress->setWindowTitle("请稍后");// 当value() = maximum()时,进程对话框是否调用reset()并且隐藏,此属性默认为true。(即进度条到达%100后进度窗口是否会隐藏)progress->setAutoClose(false);// 当value() = maximum()时,进程对话框是否调用reset(),此属性默认为true。(即进度条到达%100后是否会清零)progress->setAutoReset(false);//设置对话框模态显示progress->setWindowModality(Qt::WindowModal);//显示对话框progress->show();//更新进度条static int value = 0;  //保存进度值//使用定时器改变 进度条 valueQTimer *time = new QTimer(this);connect(time, &QTimer::timeout, this, [=](){//设置进度值progress->setValue(value++);
//        qDebug()<<progress->value();//当 value 值达到最大值 100 后,停止定时器if(value > progress->maximum()){time->stop();value = 0;progress->setLabelText("Excel已导出成功。");}});//启动进度条定时器time->start(1);connect(progress, &QProgressDialog::canceled, this, [=](){qDebug()<<progress->wasCanceled()<<11;QString filePath = QFileDialog::getOpenFileName(this,"导出excel目录","C:\\Users\\18584\\Desktop\\qtcode",//默认打开目录+文件"excel(*.xls)");//文件类型过滤if(filePath.isEmpty()){
//                QMessageBox::warning(this, "提示", "文件路径错误。");return;}else{//打开路径对应的文件QDesktopServices::openUrl(QUrl::fromLocalFile(filePath));}});
//仅作为显示出进度条的参考

详细教程可转

爱编程的大丙

相关文章:

  • 网上选课系统源码(Java)
  • Springboot:kafka运行成功,报错InvalidTopicException
  • 【OpenGauss源码学习 —— (VecToRow)算子】
  • Mybatis XML 配置文件
  • 信号可靠性剖析
  • JVM之四种引用类型(五)
  • 使用 OpenFunction 在任何基础设施上运行 Serverless 工作负载
  • Python网络爬虫环境的安装指南
  • ES6中 对象合并
  • C++作业6
  • 第3章 接入网
  • VUE学习笔记(表单数据收集)
  • uniapp 在app端 使用webview进行数据交互。
  • 【计算机组成体系结构】主存储器的基本组成
  • 两数之和 三数之和 哈希方法
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【知识碎片】第三方登录弹窗效果
  • 230. Kth Smallest Element in a BST
  • Android单元测试 - 几个重要问题
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • canvas绘制圆角头像
  • iOS 颜色设置看我就够了
  • JavaScript DOM 10 - 滚动
  • JavaScript设计模式与开发实践系列之策略模式
  • Laravel核心解读--Facades
  • PAT A1017 优先队列
  • PhantomJS 安装
  • Python 反序列化安全问题(二)
  • React的组件模式
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Zsh 开发指南(第十四篇 文件读写)
  • 从PHP迁移至Golang - 基础篇
  • 多线程事务回滚
  • 工程优化暨babel升级小记
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 盘点那些不知名却常用的 Git 操作
  • 前端
  • 前端临床手札——文件上传
  • 前端面试题总结
  • 浅谈Golang中select的用法
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 深度学习中的信息论知识详解
  • 使用putty远程连接linux
  • 数据结构java版之冒泡排序及优化
  • 学习Vue.js的五个小例子
  • 智能合约开发环境搭建及Hello World合约
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #、%和$符号在OGNL表达式中经常出现
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (Java数据结构)ArrayList