Qt应用开发(基础篇)——进度对话框 QProgressDialog

news2024/12/25 1:06:27

一、前言

         QProgressDialog类继承于QDialog,是Qt设计用来反馈进度的对话框。

        对话框QDialog

         QProgressDialog提供了一个进度条,表示当前程序的某操作的执行进度,让用户知道操作依旧在激活状态,配合按钮,用户就可以随时终止操作,并且进度条、标签、按钮都可以自定义。其他属性比如最大值、最小值、步长、当前值等的操作和QProgressBar相同

        QProgressDialog在不知道何时显示进度条的情况下提供了解决方案,比如在操作硬件的时时候,在不同系统消耗的时间不同,它提供了minimumDuration属性,在超过minimumDuration之后才显示进度条。 

QProgressDialog progress("Copying files...", "Abort Copy", 0, 100, this);
progress.setWindowModality(Qt::WindowModal);
progress.setWindowTitle("QProgressDialog");
progress.open(this,SLOT(onMessageBoxFinish()));
progress.setValue(20);
progress.exec();

二、QProgressDialog类

1、autoClose

        该属性表示是否使用reset()会自动隐藏进度条,默认为false。

bool autoClose() const
void setAutoClose(bool close)

2、autoReset

        该属性表示是否在当前值value等于最大值maximum的时候调用reset(),默认为true。

bool autoReset() const
void setAutoReset(bool reset)

3、labelText

        该属性表示标签的文本,默认为空字符串。

QString labelText() const
void setLabelText(const QString &text)

4、maximum

        该属性表示进度条可设的最大值,默认值为100。

int maximum() const
void setMaximum(int maximum)

5、minimum

        该属性表示进度条可设的最小值,默认值为0。

int minimum() const
void setMinimum(int minimum)

6、minimumDuration

        该属性保存对话框出现之前必须经过的时间,如果任务的预期持续时间小于该值,则不会出现对话框。这可以防止为快速结束的任务弹出对话框。如果设置为0,则只要设置了任何进度,对话框就会立即显示。默认值为4000毫秒。

int minimumDuration() const
void setMinimumDuration(int ms)

7、value

        该属性表示当前进度条的值,该值要不小于最小值minimum,不大于maximum。

int value() const
void setValue(int progress)

8、wasCanceled

        该属性表示对话框是否被取消。

bool wasCanceled() const

        配合模式对话框使用,在setValue()的时候判断对话框是否取消。

QProgressDialog progress("Copying files...", "Abort Copy", 0, numFiles, this);
progress.setWindowModality(Qt::WindowModal);

for (int i = 0; i < numFiles; i++) {
    progress.setValue(i);

    if (progress.wasCanceled())
             break;
    //... copy one file
}
progress.setValue(numFiles);

9、公共函数

1)open

        打开对话框并将其canceled()信号连接到接收器和成员指定的插槽。如果槽函数的第一个参数有一个指针,则连接到buttonClicked(),否则连接到finished(),当对话框关闭的时候,这个信号槽连接会被断开。        

void open(QObject *receiver, const char *member)

        实例:打开对话框的同时绑定信号canceled与槽函数onQProgressDialogCanceled,对话框关闭取消信息。 

public slots:
    void onQProgressDialogCanceled();
void MainWindow::onQProgressDialogCanceled()
{
    qDebug()<<"QProgressDialog Finish";
}
QProgressDialog progress("Copying files...", "Abort Copy", 0, 100, this);
progress.setWindowModality(Qt::WindowModal);
progress.setWindowTitle("QProgressDialog");
progress.open(this,SLOT(onQProgressDialogCanceled()));
progress.setValue(20);
progress.exec();

 2)setBar

        自定义进度条,进度对话框会自动调整大小。进度对话框拥有将在必要时删除的进度条,因此不要使用在堆栈上分配的进度条。

void setBar(QProgressBar *bar)

3)setCancelButton

        自定义取消按钮,进度对话框拥有这个按钮的所有权,它将在必要时被删除,所以不要传递堆栈上对象的地址。

void setCancelButton(QPushButton *cancelButton)

4)setLabel

        自定义标签,进度对话框会自动调整大小。标签归进度对话框所有,必要时将被删除,因此不要在堆栈上传递对象的地址。

void setLabel(QLabel *label)

10、公共槽函数

1)cancel

        取消操作,会产生重置进度对话框,wasCanceled()变为true,直到进度对话框被重置,进度对话框隐藏。

void cancel()

2)reset

        重置进度对话框,如果autoClose设置为true,那么进度条会被隐藏。

void reset()

3)setCancelButtonText

        设置取消按钮上面的文本。

void setCancelButtonText(const QString &cancelButtonText)

4)setRange

        等同于setMinimum和setMinimumDuration。

void setRange(int minimum, int maximum)

11、信号

1)canceled

        取消按钮被点击时触发。

void canceled()

 示例:定时器循环对进度条赋值,当到达最大值的时候或者取消按钮被按下的时候结束定时器。

 // Operation constructor
 Operation::Operation(QObject *parent)
     : QObject(parent), steps(0)
 {
     pd = new QProgressDialog("Operation in progress.", "Cancel", 0, 100);
     connect(pd, &QProgressDialog::canceled, this, &Operation::cancel);
     t = new QTimer(this);
     connect(t, &QTimer::timeout, this, &Operation::perform);
     t->start(0);
 }

 void Operation::perform()
 {
     pd->setValue(steps);
     //... perform one percent of the operation
     steps++;
     if (steps > pd->maximum())
         t->stop();
 }

 void Operation::cancel()
 {
     t->stop();
     //... cleanup
 }

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

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

相关文章

探索FedLCM——解锁FATE部署管理的实用功能

FedLCM &#xff08;Federation Lifecycle Manager&#xff0c;联邦生命周期管理器&#xff09;是 VMware 在 2022 年贡献到 FATE 社区的开源项目&#xff0c;通过 FedLCM 的部署管理服务和任务管理服务&#xff0c;我们可以用图形化的方式完成包括 FATE 集群的云原生部署、联邦…

Acwing791. 高精度加法

Acwing791. 高精度加法 题目描述代码展示 题目描述 代码展示 #include <iostream> #include <vector>using namespace std;vector<int> add(vector<int> &A, vector<int> &B) {if (A.size() < B.size()) return add(B, A);vector<…

扎根嵌入式行业需要什么学历文凭?

在嵌入式行业&#xff0c;学历并不是唯一关键。我本人拥有电子工程学士学位&#xff0c;但嵌入式行业更看重实际技能和经验。视频后方有免费的嵌入式学习资料&#xff0c;入门和进阶内容都涵盖其中。嵌入式行业一般接纳各种学历&#xff0c;从专科到本科到研究生&#xff0c;甚…

C++——vector:resize与reserve的区别,验证写入4GB大数据时相比原生操作的效率提升

resize和reserve的区别 reserve&#xff1a;预留空间&#xff0c;但不实例化元素对象。所以在没有添加新的对象之前&#xff0c;不能引用容器内的元素。而要通过调用push_back或者insert。 resize&#xff1a;改变容器元素的数量&#xff0c;且会实例化对象&#xff08;指定或…

用Python轻松实现Word文档到PDF的批量转换

Word文件&#xff08;Doc、Docx&#xff09;和PDF文件都是使用广泛的文档格式。其中&#xff0c;Word文档格式在编辑内容时优势明显&#xff0c;能够满足各种编辑需求。但想要保证文档的完整和格式的一致&#xff0c;以及使文档有良好的跨平台兼容性&#xff0c;PDF格式则是更好…

点对点传输技术可实现更大的文件传输

互联网的早期主要是基于点对点的系统。这是一个由学者和研究人员构成的网络&#xff0c;连接到这个网络的计算机都是同等的&#xff0c;因为每台计算机都提供了尽可能多的信息。在点对点连接的初期&#xff0c;不需要考虑快速传输大型文件。 随着互联网的发展&#xff0c;客户端…

strlen是碰到第一个字符串结束符‘\0‘就结束,所以长度不包括‘\0‘。定义数组时会默认在字符串后面添加一个‘\0‘

1 字符串数组 定义字符串数组的时候&#xff0c;会默认在字符串后面添加一个’\0’ 2 strlen 在碰到第一个字符串结束符’\0’的时候就结束计算&#xff0c;所以strlen的长度不包括’\0’。 3 实例 #include <stdio.h> #include <string.h>int main(void) {in…

Windows下将nginx等可执行文件添加为服务

Windows下将nginx等可执行文件添加为服务 为什么将可执行文件添加为服务&#xff1f;将可执行文件添加为服务的步骤步骤 1&#xff1a;下载和安装 Nginx步骤 2&#xff1a;添加为服务方法一&#xff1a;使用 Windows 自带的 sc 命令方法二&#xff1a;使用 NSSM&#xff08;Non…

[Go版]算法通关村第十六关青铜——原来滑动窗口如此简单

目录 应用了滑动窗口思想的示例滑动窗口的基本思想两个入门题题目&#xff1a;子数组最大平均数思路分析&#xff1a;计算滑动窗口值总和为 right -left复杂度&#xff1a;时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( 1 ) O(1) O(1)Go代码 题目&#xff1a;最长连续递增序列…

unity 物体至视图中心以及新对象创建位置

如果游戏对象不在视野中心或在视野之外&#xff0c; 一种方法是双击Hierarchy中的对象名称 另一种是选中后按F 新建物体时对象的位置不是在坐标原点&#xff0c;而是在当前屏幕的中心

【Android】SDK安装及配置

一、下载SDK Tools https://www.androiddevtools.cn 以windows10系统为例&#xff0c;下载压缩版直接解压即可。 二、安装SDK Tools 解压后双击运行SDK Manager.exe 一般根据默认推荐安装即可。 如果无法打开SDK Manager&#xff0c;可以参考&#xff1a;https://blog.cs…

【Ubuntu】解决ubuntu虚拟机和物理机之间复制粘贴问题(无需桌面工具)

解决Ubuntu虚拟机和物理机之间复制粘贴问题 第一步 先删除原来的vmware tools&#xff08;如果有的话&#xff09; sudo apt-get autoremove open-vm-tools第二步 安装软件包&#xff0c;一般都是用的desktop版本&#xff08;如果是server换一下&#xff09; sudo apt-get …

视频云存储/安防监控视频/智能分析网关V3裸土未覆盖/苫盖算法功能详解

随着经济的发展和建筑工地的增多&#xff0c;对于土堆的裸露情况实时监测和管理变得尤为重要。为了解决这一问题&#xff0c;TSINGSEEE青犀AI智能分析网关V3的裸土未苫盖算法就能很好地解决。 AI算法模型可以实时识别路面/建筑工地中的土堆是否裸露&#xff0c;将工地、道路等…

Erasure-Code(纠删码) 最佳实践

Erasure-Code(纠删码) 最佳实践 1. 纠删码原理 这个星球产生的数据越来越庞大&#xff0c;差不多2010年开始各大互联网公司大都上线了系统以应对数据膨胀带来的成本增长。Erasure-Code&#xff08;纠删码&#xff09;技术应用其中。典型如Google 新一代分布式存储系统colossu…

一种借助MYSQL递归CTE生成所有的组合情况的实现方法

需求说明 有如下表和数据&#xff1a; Nname1户口2查询机构数过多3危险驾驶4多头用信 需要输出name里的所有组合情况&#xff0c;即单个值&#xff0c;两两组合&#xff0c;三个组合、四个组合。结果为2的n次方-1中情况&#xff0c;这里是15。 预期结果为&#xff1a; Com…

DP358 11MHz 增益带宽轨到轨输出运算放大器

DP358、DP321、DP323、DP324是一款低噪声、低压、低 功耗轨到轨输出运放大器&#xff0c;该系列放大器的增益带宽为 11MHz,压摆率为 8.5V/uS,其中DP323 在掉电工作模式下待机电流小于1uA。该系列放大器可以广泛应用于各种电子产品领域。 主要特性: 轨到轨最大输入输出失调电压…

国标GB28181视频监控EasyGBS国标视频平台分享链接不生效的问题解决方案

EasyGBS平台可提供流媒体接入、处理、转发等服务&#xff0c;支持内网、公网的监控设备通过国标GB/T28181协议进行视频监控直播。平台可拓展性强&#xff0c;部署灵活&#xff0c;可实现的视频能力有&#xff1a;实时直播、视频录像、语音对讲、云存储、检索及回放、告警、级联…

【OpenCV入门】第三部分——绘制图形与文字

文章结构 线段的绘制矩形的绘制圆形的绘制多边形的绘制文字的绘制文字的斜体效果文字的垂直镜像效果在图像上绘制文字 动态绘制图形 线段的绘制 使用 line() 方法可绘制长短不一的、粗细各异的、五颜六色的线段。 img cv2.line(img,pt1,pt2,color,thickness)img&#xff1a;…

苹果使用3D打印技术制造Apple Watch Series 9手表外壳

据彭博社的马克・古尔曼报道&#xff0c;苹果公司正在使用 3D 打印技术来制造即将推出的部分Apple Watch Series 9 的外壳。这种制造工艺可以节省传统数控加工所需的大量金属材料&#xff0c;同时缩短生产时间。这与之前苹果分析师郭明錤的说法相吻合。 苹果公司自2021年推出Ai…

【三等奖方案】小样本数据分类任务赛题「痛!太痛了!」团队解题思路

第十届CCF大数据与计算智能大赛&#xff08;2022 CCF BDCI&#xff09;已圆满结束。大赛官方竞赛平台DataFountain&#xff08;简称DF平台&#xff09;将陆续释出各赛题获奖队伍的方案思路。 本方案为【小样本数据分类任务】赛题的三等奖获奖方案&#xff0c;赛题地址&#xf…