QProgressDialog进度条类

news2024/10/7 10:21:33

QProgressDialog

  • 常用API
  • 简单的使用

QProgressDialog类是QDialog的子类, 通过这个类我们可以得到一个带进度条的对话框窗口

常用API

// 构造函数
/*
参数:
  - labelText: 对话框中显示的提示信息
  - cancelButtonText: 取消按钮上显示的文本信息
  - minimum: 进度条最小值
  - maximum: 进度条最大值
  - parent: 当前窗口的父对象
  - f: 当前进度窗口的flag属性, 使用默认属性即可, 无需设置
*/
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());


// 设置取消按钮显示的文本信息
[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();

// 设置窗口的显示状态(模态, 非模态)
/*
参数:
	Qt::NonModal  -> 非模态
	Qt::WindowModal	-> 模态, 阻塞父窗口
	Qt::ApplicationModal -> 模态, 阻塞应用程序中的所有窗口
*/
void QWidget::setWindowModality(Qt::WindowModality windowModality);

简单的使用

void MainWindow::on_pushButton1_clicked()
{
    // 1 构造进度条对象
    QProgressDialog* q1 = new QProgressDialog(
        this,
        Qt::WindowFlags());
    // 2 初始化并显示进度条
    q1->setCancelButtonText("取消下载");
    q1->setLabelText("正在下载");
    q1->setMinimum(0);
    q1->setMaximum(50);
    q1->setValue(10);
    q1->setAutoReset(true);
    q1->setWindowTitle("请稍等,正在下载");
    q1->show();
    // 3 更新进度条
    static int val = 0;
    QTimer* t1 = new QTimer(this);
    t1->start(20);
    connect(t1,&QTimer::timeout,this,[=]{
       q1->setValue(val);
       val++;
        //终止条件
       if(val>q1->maximum()){
           t1->stop();
           val = 0;
       }
    });



}

void MainWindow::on_pushButton2_clicked()
{
    // 1 构造进度条对象
    QProgressDialog* q1 = new QProgressDialog(
        "进度条对话框", "取消当前进度条",
        0, 100, this,
        Qt::WindowFlags());
    // 2 初始化并显示进度条
    q1->setAutoClose(true);
    q1->setWindowTitle("进度条窗口的标题");
    q1->setAutoClose(false);    //当value() = maximum()时,进程对话框是否调用reset()并且隐藏
    q1->show();
    // 3 更新进度条
    static int val = 0;
    QTimer* t1 = new QTimer(this);
    t1->start(20);
    connect(t1,&QTimer::timeout,this,[=]{
       q1->setValue(val);
       val++;
        //终止条件
       if(val>q1->maximum()){
           t1->stop();
           val = 0;
       }
    });


}

void MainWindow::on_pushButton3_clicked()
{
    // 1 构造进度条对象
    QProgressDialog* q1 = new QProgressDialog(
        "进度条对话框", "取消当前进度条",
        0, 100, this,
        Qt::WindowFlags());
    // 2 初始化并显示进度条
    q1->setAutoClose(true);
    q1->setWindowTitle("进度条窗口的标题");
    q1->setAutoClose(false);    //当value() = maximum()时,进程对话框是否调用reset()并且隐藏
    q1->show();
    // 3 更新进度条
    static int val = 0;
    QTimer* t1 = new QTimer(this);
    t1->start(20);
    connect(t1,&QTimer::timeout,this,[=]{
       q1->setValue(val);
       val++;
        //终止条件
       if(val>q1->maximum()){
           t1->stop();
           val = 0;
       }
    });
    connect(q1,&QProgressDialog::canceled,this,[=]{
        t1->stop();
        val = 0;

    });
}

void MainWindow::on_pushButton4_clicked()
{
    // 1 构造进度条对象
    QProgressDialog* q1 = new QProgressDialog(
        "进度条对话框", "取消当前进度条",
        0, 100, this,
        Qt::WindowFlags());
    // 2 初始化并显示进度条
    q1->setAutoClose(true);
    q1->setWindowTitle("进度条窗口的标题");
    q1->setAutoClose(false);    //当value() = maximum()时,进程对话框是否调用reset()并且隐藏
    /*
    参数:
        Qt::NonModal  -> 非模态
        Qt::WindowModal	-> 模态, 阻塞父窗口
        Qt::ApplicationModal -> 模态, 阻塞应用程序中的所有窗口
        设置窗口的显示状态(模态, 非模态)
    */
    q1->setWindowModality(Qt::WindowModal);
    q1->show();
    // 3 更新进度条
    static int val = 0;
    QTimer* t1 = new QTimer(this);
    t1->start(20);
    connect(t1,&QTimer::timeout,this,[=]{
       q1->setValue(val);
       val++;
        //终止条件
       if(val>q1->maximum()){
           t1->stop();
           val = 0;
       }
    });
    connect(q1,&QProgressDialog::canceled,this,[=]{
        t1->stop();
        val = 0;
        qDebug()<<"点击了取消按钮";

    });

第一个
在这里插入图片描述

第二个
在这里插入图片描述

第三个
在这里插入图片描述

第四个
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/859509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql整理

一、基础概念 1. 索引 之前的文章已经写过了&#xff0c;比较细 数据库索引含义,类别,用法,创建方式_表结构加树形id和索引是为什么_马丁•路德•王的博客-CSDN博客 简单概括就是在表的某个列或者多个列或者联合表的时候加个索引&#xff0c;类似图书馆书本的索引编号&…

lwip使用收发线程和不使用收发线程差异

使用收发线程的方式相对于不使用收发线程的方式&#xff0c;效率可能会稍低一些&#xff0c;这取决于具体的应用场景和实现方式。 lwIP&#xff08;轻量级IP协议栈&#xff09;是一个针对嵌入式系统的开源TCP/IP协议栈。它可以在单个线程中运行&#xff0c;也可以在多个线程中…

强大的AI语言模型

1.kameAI 点我 1️⃣可以绘图 2️⃣对接4.0 3️⃣具有长篇写作

UG NX二次开发(C#)-CAM自定义铣加工的出口环境

文章目录 1、前言2、自定义铣削加工操作3、出错原因4、解决方案4.1 MILL_USER的用户参数4.2 采用自定义铣削的方式生成自定义的dll4.2 配置加工的出口环境4.3 调用dll5、结论1、前言 作为一款大型的CAD/CAM软件, UG NX为我们提供了丰富的加工模板,通过加工模板能直接用于生成…

欧拉降幂问题

题目连接 D-幂运算_2023河南萌新联赛第&#xff08;四&#xff09;场&#xff1a;河南大学 (nowcoder.com) djz的数学题 (nowcoder.com) 欧拉降幂 当 b 过大时&#xff0c;快速幂的时间复杂度超过题目要求时&#xff0c;考虑欧拉降幂。 &#xff08;c&#xff09;是 欧拉函数…

C 语言的文件,流, 键盘输入, 重定向

文章目录 The End of File重定向 redirection输入重定向输出重定向组合重定向 A file is an area of memory in which information is stored. Normally, a file is kept in some sort of permanent memory, such as a hard disk, USB flash drive, or optical disc, such as a…

基于关系有向图的知识推理2022ACM 8.9+8.10

基于关系有向图的知识推理 摘要介绍相关工作基于路径的方法基于GNN的方法 关系有向图RED-GCNr-digraph递归编码学习用于查询的基本信息 实验 摘要 知识图推理旨在从已有的知识中推断出新的事实。基于关系路径的方法在文献中显示出较强的可解释性和归纳推理能力。然而&#xff…

如何进行游戏平台搭建?

游戏平台搭建涉及多个步骤和技术&#xff0c;下面是一个大致的指南&#xff1a; 市场调研和定位&#xff1a;首先&#xff0c;要了解游戏市场和受众的需求&#xff0c;选择适合的游戏类型和定位。 选择平台类型&#xff1a;决定是要搭建网页平台、移动应用平台还是其他类型的…

Vue3 —— to 全家桶及源码学习

该文章是在学习 小满vue3 课程的随堂记录示例均采用 <script setup>&#xff0c;且包含 typescript 的基础用法 前言 本篇主要学习几个 api 及相关源码&#xff1a; toReftoRefstoRaw 一、toRef toRef(reactiveObj, key) 接收两个参数&#xff0c;第一个是 响应式对象…

专治疗懒病:GO、KEGG富集分析一体函数

之前我们写过GO、KEGG的富集分析&#xff0c;参见&#xff1a;补充更新&#xff1a;GO、KEGG&#xff08;批量分组&#xff09;分析及可视化。演示了差异基因KEGG或者GO的分析流程。其实差异基因的富集分析输入的文件只需要一组基因就可以了。所以我们发挥了专治懒病的优良传统…

【MySQL】创建高级联结

目录 一、使用表别名 二、使用不同类型的联结 1.自联结 2.自然联结 3.外部联结 3.使用带聚集函数的联结 4.使用联结和联结条件 一、使用表别名 别名除了用于列名和计算字段外&#xff0c;SQL还允许给表名起别名。 起别名有两个好处&#xff1a; 一个是缩短SQL语句&am…

群晖6.X便捷的安装cpolar内网穿透

群晖6.X便捷的安装cpolar内网穿透 文章目录 群晖6.X便捷的安装cpolar内网穿透前言1. 下载cpolar的群晖套件1.1 打开群晖套件中心1.2 选择“手动安装”1.3 选择下载cpolar套件位置 2. 打开cpolar的Web-UI界面3. 注册会员 前言 随着硬件设备和软件技术的发展&#xff0c;以及数据…

ElasticsSearch基础概念和安装

ElasticSearch基础概念以及可视化界面安装 文章目录 ElasticSearch基础概念以及可视化界面安装1、引言2、基本概念3、倒排索引机制3.1、倒排索引 4、使用docker安装ElasticSearch4.1、下载镜像文件4.2 、创建实例,启动es 5.安装Kibana 1、引言 Elastic 的底层是开源库 Lucene。…

朋友圈点赞截图生成,制作朋友圈网页​

支持纯文字内容&#xff0c;图文内容&#xff0c;单图&#xff0c;多图。自定义点赞数量、自定义评论&#xff0c;随机头像和自定义头像。 这个工具基本支持我们所需要的所有功能。可以说是目前最全的朋友圈页面生成器。 朋友圈页面样式是Iphone pro 14上的效果&#xff0c;几…

OneFlow 中的 Softmax

Softmax 是深度学习模型中的常见算子。PyTorch 的 Softmax 算子直接调用 cuDNN 的接口。而 OneFlow 内部针对输入数据的类别数量&#xff0c;采用3个 kernel 来分别处理&#xff0c;在多数情况下都可以获得比 cuDNN 更优的性能表现。下面对其实现进行介绍。OneFlow 的静态分层结…

Leetcode24 两两交换链表相邻的节点

迭代解法&#xff1a; class Solution {public ListNode swapPairs(ListNode head) {ListNode dummyHead new ListNode(0);dummyHead.next head;ListNode temp dummyHead;while (temp.next ! null && temp.next.next ! null) {ListNode node1 temp.next;ListNode n…

谷粒商城第十一天-品牌管理中关联分类

目录 一、总述 二、前端部分 1. 调整查询调用 2. 关联分类 三、后端部分 四、总结 一、总述 之前是在商品的分类管理中直接使用的若依的逆向代码 有下面的几个问题&#xff1a; 1. 表格上面的参数填写之后&#xff0c;都是按照完全匹配进行搜索&#xff0c;没有模糊匹配…

化工行业案例 | 甄知科技助力万华化学重构IT服务价值,打造信息中心ERP!

随着科技的发展&#xff0c;新材料的应用领域与日俱增&#xff0c;近年来&#xff0c;全球化工新材料产业发展整体步入高技术引领、产品迭代速度快、产业规模和需求不断扩大的阶段。一体化协同与数字化转型策略是实现化工新材料生产原料自给、节能降耗、降低排放和物料成本的重…

验证码识别全流程实战

验证码的历史与发展 验证码&#xff0c;全称为 “Completely Automated Public Turing test to tell Computers and Humans Apart”&#xff0c;即全自动区分计算机和人类的图灵测试&#xff0c;Captcha。早在上个世纪 90 年代&#xff0c;为了防止恶意的网络机器人行为&#x…

matplotlib 笔记:hist2d 2D直方图

创建二维直方图&#xff0c;用于显示数据分布的图表将数据划分成不同的区间&#xff08;bin&#xff09;&#xff0c;并统计每个区间内数据点的数量 1 基本画法 默认bin的数量是10*10 N 1000 x np.random.randn(N) y np.random.randn(N) plt.hist2d(x, y) 2 修改bin的…