Qt 基础之进度条 - QProgressDialog和QProgressBar

Qt 基础之进度条 - QProgressDialog和QProgressBar

  • 引言
  • 一、QProgressDialog例程
    • 1.1 效果展示
    • 1.2 源码
  • 二、QProgressBar例程
    • 2.1 效果展示
    • 2.2 源码
  • 三、QProgressBar进阶

引言

进度条的作用是用于显示任务或操作的进度,以便用户了解当前任务的完成情况。它可以提供实时、可视的反馈,让用户知道任务的进展情况,以及剩余的时间或工作量。进度条可以用于各种应用场景,比如文件下载、软件安装、视频播放、上传文件、数据处理等,帮助用户更好地管理和掌控任务的执行。

  • QProgressDialogQProgressBar用来是Qt框架中用于显示进度条的两个类,它们都是基于QWidget的派生类,用于在应用程序中显示任务的进度。

一、QProgressDialog例程

  • QProgressDialog是一个具有取消按钮的对话框。

1.1 效果展示

在这里插入图片描述
点击按钮弹出进度条对话框,点击不读了关闭对话框。

1.2 源码

void MainWindow::on_pushButton_clicked()
{
    //创建一个进度条对话框 .....
    QProgressDialog *progressDialog = new QProgressDialog(this);
    progressDialog->setMinimumWidth(300);               // 设置最小宽度
    progressDialog->setWindowModality(Qt::NonModal);    // 非模态,其它窗口正常交互  Qt::WindowModal 模态
    progressDialog->setMinimumDuration(0);              // 等待0秒后显示
    progressDialog->setWindowTitle(tr("进度条框"));      // 标题名
    progressDialog->setLabelText(tr("正在读取"));        // 标签的
    progressDialog->setCancelButtonText(tr("不读了"));   // 取消按钮
    progressDialog->setRange(0, 10);
    for(int i=1; i <= 10; i++)
    {
        if(progressDialog->wasCanceled())
            return;
        progressDialog->setValue(i);
        // 延时
        QEventLoop eventloop;
        QTimer::singleShot(1000, &eventloop, SLOT(quit()));
        eventloop.exec();
    }
}

二、QProgressBar例程

2.1 效果展示

在这里插入图片描述
在窗口中添加了一个progressBar,直接设置其RangeValue即可。

2.2 源码

void MainWindow::on_pushButton_clicked()
{
    // 创建一个进度条对话框 .....
    QProgressDialog *progressDialog = new QProgressDialog(this);
    progressDialog->setMinimumWidth(300);               // 设置最小宽度
    progressDialog->setWindowModality(Qt::NonModal);    // 非模态,其它窗口正常交互  Qt::WindowModal 模态
    progressDialog->setMinimumDuration(0);              // 等待0秒后显示
    progressDialog->setWindowTitle(tr("进度条框"));      // 标题名
    progressDialog->setLabelText(tr("正在读取"));        // 标签的
    progressDialog->setCancelButtonText(tr("不读了"));   // 取消按钮
    progressDialog->setRange(0, 10);

    // progressBar
    ui->progressBar->setRange(0, 10);

    // 显示进度
    for(int i=1; i <= 10; i++)
    {
        if(progressDialog->wasCanceled())
            return;
        progressDialog->setValue(i);
        ui->progressBar->setValue(i);
        // 延时
        QEventLoop eventloop;
        QTimer::singleShot(1000, &eventloop, SLOT(quit()));
        eventloop.exec();
    }
}

三、QProgressBar进阶

QProgressDialog 约等于 对话框 + QProgressBar + 按钮,以QProgressBar为切入点,深入了解Qt进度条.

    1. 先设置最大值maximum和最小值minimum,然后给它提供当前值v时显示已完成的百分比。百分比的计算方法 = ( v − m i n i m u m ) / ( m a x i m u m − m i n i m u m ) (v - minimum) / (maximum-minimum) (vminimum)/(maximumminimum)
      在这里插入图片描述
void MainWindow::on_pushButton_clicked()
{
    i = 0;
    // 实现定时事件
    connect(timer, &QTimer::timeout, [this](){
        i++;
        ui->progressBar->setValue(i);
        if(i == ui->progressBar->maximum()){
            timer->stop();
        }
    });

    // progressBar
    ui->progressBar->setRange(0, 10);

    // 开启定时器
    timer->start(1000);
}
    1. 获取其常用的属性
      在这里插入图片描述
    // progressBar
    ui->progressBar->setRange(0, 10);
    qDebug()<<"当前值:"<<ui->progressBar->value();
    qDebug()<<"最大值:"<<ui->progressBar->maximum();
    qDebug()<<"最小值:"<<ui->progressBar->minimum();
    qDebug()<<"方向:"<<ui->progressBar->orientation();
    qDebug()<<"格式:"<<ui->progressBar->format();
    1. 当其最大值 = 最小值 = 0,进度条会没有显示但一直在动
      在这里插入图片描述
void MainWindow::on_pushButton_clicked()
{
    i = 0;
    // 实现定时事件
    connect(timer, &QTimer::timeout, [this](){
        i++;
        ui->progressBar->setValue(i);
        if(i == ui->progressBar->maximum()){
            timer->stop();
        }
    });

    // progressBar
    ui->progressBar->setRange(0, 0);

    // 开启定时器
    timer->start(1000);
}
    1. 格式format:%p - 百分比. %v - 当前值. %m - 总值. ui->progressBar->setFormat("%p"); // %v %m
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    1. 自定义格式:ui->progressBar->setFormat("%p% %v/%m");
      在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何删除PS最近使用项

ps删除最近文件列表 点击菜单栏中文件&#xff0d;>最近打开文件&#xff0d;>清除最近的文件列表

【python】windowslinux系统python的安装

一、python官网及下载路径 官网地址&#xff1a;Welcome to Python.org 下载路径&#xff1a;Download Python | Python.org ​​​​​​​ linux源码安装包下载&#xff1a; windows二进制安装包下载&#xff1a; 二、Linux如何安装python 2.1 单版本安装 以安装python…

Python实现线性逻辑回归和非线性逻辑回归

线性逻辑回归 # -*- coding: utf-8 -*- """ Created on 2024.2.20author: rubyw """import matplotlib.pyplot as plt import numpy as np from sklearn.metrics import classification_report from sklearn import preprocessing from sklearn…

Java+SpringBoot+Vue的大学生就业信息管理系统

一、项目介绍 基于Java (spring-boot)的大学生就业信息管理系统分为三个角色&#xff1a;管理员、企业、求职者。 功能:登录、注册功能、学生信息管理、企业信息管理、岗位分类管理、学历信息管理、应聘信息管理、求职者信息管理、招聘信息管理。 二、作品包含 三、项目技术 后…

BERT架构简介

一、BERT模型架构 BERT沿用原始Transformer模型中的编码器层&#xff0c;具有编码器的堆叠。但BERT没有使用解码器层&#xff0c;因此没有掩码多头注意力子层。&#xff08;BERT的设计者认为&#xff0c;对序列后续部分进行掩码会阻碍注意力过程&#xff09;。于是&#xff0c;…

Day 30 标准IO

文章目录 1.什么是标准IO1.1 概念1.2 特点1.3 操作 2.缓存区3.函数接口3.1 打开文件fopen3.2 关闭文件 fclose3.3 读写文件操作3.3.1 每次读写一个字符&#xff1a;fgetc()、fputc()每次读一个字符fgetc()每次写一个字符fputc()(1)针对文件(2)针对终端feof和ferror 3.3.2 每次一…

笔试题详解(C语言进阶)

前言 欢迎阅读本篇文章&#xff01;本篇文章通过一个笔试题来加强我们对C语言的理解&#xff0c;希望对你有帮助。后续我会写一个栏目&#xff0c;集合我见到的C语言题目&#xff0c;进行分析讲解。 1、题目一 判断下面程序的输出结果&#xff1a;(下面说的地址4/8字节是因为对…

【GameFramework框架内置模块】2、数据节点(Data Node)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

机器学习 day38(有放回抽样、随机森林算法、XGBoost)

有放回抽样 有放回抽样和无放回抽样的区别&#xff1a;有放回可以确保每轮抽取的结果不一定相同&#xff0c;无放回则每轮抽取的结果都相同 在猫狗的例子中&#xff0c;我们使用”有放回抽样“来抽取10个样本&#xff0c;并组合为一个与原始数据集不同的新数据集&#xff0c;虽…

ORM中常用的字段和参数,正反向概念

django表查询测试环境搭建 首先&#xff0c;在此之前我们先来回顾一下之前学习的orm内容 1. django自带一个小型的sqlite3的小型数据库 但是这个数据库的功能非常有限&#xff0c;并且针对日期类型的数据兼容性很差 2. 切换数据库数据(MySQL) 2.1 在django1.x版本中你需要在_…

盲水印、暗水印(Blind Watermark)算法简明教程:算法原理、流程以及基于C/C++ 的代码实现

前言 由于工作需要&#xff0c;最近学习了盲水印相关的知识&#xff0c;本文对学习过程中做一个整理和总结。主要内容包括&#xff1a; 对盲水印相关概念做基本介绍对开源的 python 算法 blind_watermark 进行解析&#xff0c;给出算法流程基于 blind_watermark&#xff0c;给…

qt - 19种精美软件样式

qt - 19种精美软件样式 一、效果演示二、核心程序三、下载链接 一、效果演示 二、核心程序 #include "mainwindow.h"#include <QtAdvancedStylesheet.h> #include <QmlStyleUrlInterceptor.h>#include "ui_mainwindow.h" #include <QDir&g…

提高工作效率,体验ONLYOFFICE办公软件

ONLYOFFICE办公软件 一、前言二、特点完整办公套件协作过程更容易 三、访问地址 一、前言 随着数字化办公的普及&#xff0c;办公软件在我们的工作中扮演着越来越重要的角色。为了提高工作效率&#xff0c;我们需要一个功能强大、易于使用的办公软件。ONLYOFFICE作为一款全功能…

如何通过SQL语句获取表/视图的DDL,表/列/索引的统计信息,查询的执行计划(MySQL)

文章目录 获取对象的定义SQL语句列出库中的表和视图表的DDL语句索引的DDL语句视图的DDL语句物化视图的DDL语句 获取统计信息的SQL语句表级统计信息索引统计信息列级统计信息 获取执行计划的Explain语句ExplainExplain JsonExplain Tree (8.0.16及以上)Explain Analyze (8.0.18及…

Java语言实现五子棋

目录 内容 题目 解题 代码 实现 内容 题目 五子棋 使用二维数组,实现五子棋功能. 1.使用二维数组存储五子棋棋盘 如下图 2.在控制台通过Scanner输入黑白棋坐标(例如:1,2 2,1格式 表示二维数组坐标),使用实心五角星和空心五角星表示黑白棋子. 如下图: 输入后重新输出…

解决方案——文本生成图像DF-GAN配置Oxford-102 Flower 花数据集全流程

目录 一、Oxford-102 Flower简介二、DF-GAN配置Oxford-102 Flower 数据集2.1、下载数据集2.2、配置数据集 三、修改代码四、资源下载 一、Oxford-102 Flower简介 Oxford-102 Flower是牛津工程大学于2008年发布的用于图像分类的花卉数据集&#xff0c;原论文链接&#xff1a;Au…

适配器模式:转换接口,无缝对接不同系统

文章目录 **一、技术背景与应用场景****为什么使用适配器模式&#xff1f;****典型应用场景包括但不限于&#xff1a;** **二、适配器模式定义与结构****三、使用步骤举例****四、优缺点分析****总结** 一、技术背景与应用场景 适配器模式在软件设计中扮演着桥梁角色&#xff…

.zip文件如何在centos7解压

在CentOS 7中解压.zip文件&#xff0c;您可以使用unzip命令。如果您的系统上没有安装unzip工具&#xff0c;您首先需要安装它。以下是步骤指南&#xff1a; 安装unzip工具 打开终端并运行以下命令来安装unzip&#xff1a; sudo yum install unzip解压.zip文件 安装unzip之后&am…

2023年12月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 运行以下程序,输出的结果是?( ) class A():def __init__(self,x):self.x=x

leetcode hot100组合综合四

本题中&#xff0c;是要求nums中求的总和为target的排列数&#xff0c;因为题中说了&#xff0c;元素顺序不同&#xff0c;则可以视为不同的结果之一。 所以&#xff0c;根据对背包问题的总结&#xff0c;本题中元素可以重复使用&#xff0c;是完全背包并且需要求排列数&#…