(1) 本类的继承关系

在这里插入图片描述

++可见,进度对话框,也是 QDialog 的子类,在其上面又摆放了一些控件,构成了不同用途的对话框。咱们也可以自定义对话框。只是没有 QT 官方大师们做的好。 人家在定义这 6 个子对话框的时候,还加入了属性 property 、信号函数、槽函数、静态函数等,整的很复杂,很全面。由此, QT 官方提供了这 6 种通用对话框,以满足最高频率的使用需求。

在这里插入图片描述

(2)给出本类的测试举例

在这里插入图片描述

(3)

在这里插入图片描述

(4)

在这里插入图片描述

(5)

在这里插入图片描述

(6)

在这里插入图片描述

(7)本源代码定义于头文件 qprogressdialog . h

#ifndef QPROGRESSDIALOG_H
#define QPROGRESSDIALOG_H#include <QtWidgets/qtwidgetsglobal.h>#include <QtWidgets/qdialog.h>QT_REQUIRE_CONFIG(progressdialog);QT_BEGIN_NAMESPACEclass QPushButton;
class QLabel;
class QProgressBar;
class QTimer;
class QProgressDialogPrivate;/*
The QProgressDialog class provides feedback on the progress of a slow operation.Detailed Description:
进度对话框用于向用户显示某个操作将耗时多久,并表明应用程序并未冻结。
它还可以为用户提供中止操作的机会。进度对话框的一个常见问题在于难以确定何时使用它们;不同硬件上操作所需的时间各不相同。
QProgressDialog提供了一种解决方案:它估计操作所需的时间(基于步骤所需时间),
并且仅在估计时间超过minimumDuration()(默认为4秒)时才显示自身。使用`setMinimum()和`setMaximum方法或构造函数来设置操作中的“步骤数量,
并在操作进行过程中调用`setValue()、方法。
步骤数量可以任意选择,可以是复制的文件数量、接收的字节数、算法主循环中的迭代次数,或者其他合适的单位。
进度从`setinimum()、设定的值开始,
当您调用`setValue()、方法并将由setMaximum()、设定的值作为参数时,这进度对话框将显示操作已完成。该对话框会在操作结束时自动重置并隐藏自身。使用`setAutoReset()、和`setAutoClose来改变这一行为。请注意,如果您设置了新的最大值(使用setMaximum()或setRange()、),且该值等于当前值,
则对话框将无论如何都不会关闭。使用QProgressDialog有两种方式:模态和非态。
与无模态的 QProgressDialog相比,模态的 QProgressDialog 对于程序员来说使用起来更为简单。可以在循环中进行操作,在循环中调用setValue()方法,并通过wasCanceled()方法检查是否被取消。例如: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); //最后一次赋值,达到最大值。无模态进度对话框适用于在后台进行的操作,此时用户能够与应用程序进行交互。
此类操作通常基于QTimer(或Q0bject:timerEvent())或QSocketNotifier;或者是在单独的线程中执行。主窗口状态栏中的 QProgressBar往往是无模态进度对话框的替代方案。你需要有一个事件循环在运行,将“取消cancel”信号连接到停止操作的槽函数,并定时调用setValue”函数。例如://  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 operationsteps++;if (steps > pd->maximum())t->stop();       //超限后停止进度对话框}void Operation::cancel(){   t->stop();//... cleanup}在这两种模式下,可以通过使用`setLabel()、setBar()和`setCancelButton()来替换子小部件,
从而自定义进度对话框。
setLabelText()和`setCancelButtonText()、函数用于设置显示的文本。*/class Q_WIDGETS_EXPORT QProgressDialog : public QDialog
{Q_OBJECTQ_DECLARE_PRIVATE(QProgressDialog)Q_PROPERTY(QString   labelText   //此属性持有标签的文本。默认文本为空字符串。READ     labelText   WRITE   setLabelText)/*此属性保存了当前完成的进度量。为使进度对话框按预期工作,您应先将此属性设置为、QProgressDialog::minimum(),最后再设置为 QProgressDialog::maximum()、;您可以在两者之间多次调用`setValue()、方法。警告:如果进度对话框是模态的(参见QProgressDialog::QProgressDialog()),则setValue()调用 QCoreApplication::processEvents(),因此请留意不要在你的代码中导致不期望的重入。例如,不要在paintEvent()内部使用 QProgressDialog。*/Q_PROPERTY(int value   READ value   WRITE setValue  )//此属性表示进度条所代表的最低值。默认值为  0。Q_PROPERTY(int minimum READ minimum WRITE setMinimum)//此属性持有进度条 表示的最高值。 默认值为100。Q_PROPERTY(int maximum READ maximum WRITE setMaximum)//此属性表示对话框是否被取消Q_PROPERTY(bool wasCanceled READ  wasCanceled)//此属性表示当value()等于最大值时,进度对话框是否立即调用reset()。默认值为true。Q_PROPERTY(bool autoReset   READ  autoReset    WRITE  setAutoReset)//此属性表示对话框是否被 reset()隐藏。默认值为true。Q_PROPERTY(bool autoClose   READ  autoClose    WRITE  setAutoClose)Q_PROPERTY(int     minimumDurationREAD   minimumDuration   WRITE   setMinimumDuration)/*此属性表示对话框出现前必须经过的时间。如果任务的预期持续时间短于“最小持续时间”,则对话框将完全不会显示。这可以避免在任务很快结束时就弹出对话框。对于预期持续时间将超过“最小持续时间”的任务,对话框将在“最小持续时间”时间过后或一旦设定任何进度时弹出。如果设置为0,一旦有任何进度就始终显示对话框。默认值是4000毫秒。*/protected:void   showEvent(QShowEvent   * event) override;void changeEvent(QEvent       * event) override;void resizeEvent(QResizeEvent * event) override;void  closeEvent(QCloseEvent  * event) override;private:Q_DISABLE_COPY(QProgressDialog)Q_PRIVATE_SLOT(d_func(), void _q_disconnectOnClose())public://构建一个进度对话框。默认设置: 标签文本为空。取消按钮文本为“cancel”。最小值为 0,最大值为 100。//parent参数是对话框的父窗口。窗口标志 flags 被传递给QDialog::QDialog()构造函数。//QDialog(QWidget * parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());explicitQProgressDialog(QWidget * parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());QProgressDialog(const   QString  &             labelText,const   QString  &      cancelButtonText,int             minimum         ,int             maximum         ,QWidget  *      parent = nullptr,Qt::WindowFlags flags  = Qt::WindowFlags());//构建一个进度对话框。labelText是用于提醒用户正在进行什么的文本。//cancelButtonText是显示在取消按钮上的文本。如果传递了QString(),则不会显示取消按钮。//最小值 minimum和最大值 maximum是该进度对话框显示进度的操作中的步骤数。//例如,如果要检查50个文件,则该值的最小值为0,最大值为50。//在检查第一个文件之前,调用setValue(0)。//处理每个文件时,调用setValue(1)、setValue(2)等,最后在检查最后一个文件后调用 setValue(50)。//parent参数是对话框的父级窗口。parent和标志 flags,被传递给QDialog::QDialog() 构造函数。~QProgressDialog();//   Q_PROPERTY(QString     labelText      //此属性持有标签的文本。默认文本为空字符串。
//              READ        labelText      WRITE   setLabelText)QString     labelText() const;
public Q_SLOTS:void     setLabelText(const QString & text);public :
//   Q_PROPERTY(int         value         此属性保存了当前完成的进度量。
//              READ        value         WRITE    setValue  )int         value() const;
public Q_SLOTS:void     setValue(int progress);public :
//   Q_PROPERTY(int         minimum       //此属性表示进度条所代表的最低值。默认值为  0。
//              READ        minimum       WRITE    setMinimum)int         minimum() const;
public Q_SLOTS:void     setMinimum(int minimum);void     setRange  (int minimum, int maximum);public :
//   Q_PROPERTY(int         maximum       //此属性持有进度条 表示的最高值。 默认值为100。
//              READ        maximum       WRITE   setMaximum)int         maximum() const;
public Q_SLOTS:void     setMaximum(int maximum);public :
//   Q_PROPERTY(bool        wasCanceled   //此属性表示对话框是否被取消
//              READ        wasCanceled)bool        wasCanceled() const;//   Q_PROPERTY(bool        autoReset     //当value()等于最大值时,是否调用reset()。默认为true。
//              READ        autoReset     WRITE  setAutoReset)bool        autoReset() const;void     setAutoReset(bool reset);//   Q_PROPERTY(bool        autoClose     //调用 reset()时是否隐藏本对话框。默认值为true。
//              READ        autoClose     WRITE  setAutoClose)bool        autoClose() const;void     setAutoClose(bool close);//   Q_PROPERTY(int         minimumDuration  //此属性表示对话框出现前必须经过的时间。
//              READ        minimumDuration   WRITE   setMinimumDuration)int         minimumDuration() const;
public Q_SLOTS:void     setMinimumDuration(int ms);public :QSize sizeHint() const override;//将标签设置为label。进度对话框会进行相应调整以合适显示。//该标签将归属于进度对话框,并在必要时被删除,因此请勿传递栈上对象的地址。void setLabel       (QLabel       * label );void setBar         (QProgressBar * bar   ); //Sets the progress bar widget to bar.void setCancelButton(QPushButton  * button); //传递空指针将不再显示本取消按钮。//Sets the cancel button to the push button, cancelButton.//If nullptr is passed, no cancel button will be shown.public Q_SLOTS://void setMinimumDuration(int       ms        );//void setMaximum        (int       maximum   );//void setMinimum        (int       minimum   );//void setRange          (int       minimum, int maximum);//void setValue          (int       progress  );//void setLabelText(const QString & text      );void setCancelButtonText(const QString & text); //若形参为空字符串,则会删除本按钮//Sets the cancel button's text to cancelButtonText.//If the text is set to QString() then it will cause the//  cancel button to be hidden and deleted.//重置进度对话框。如果autoClose()为true,则进度对话框将被隐藏。void reset    ();void cancel   ();//重置进度对话框。wasCanceled()保持为真,直到进度对话框被重置 reset。进度对话框将被隐藏。protected Q_SLOTS://如果在算法启动后经过了minimumDuration毫秒,对话框仍然隐藏,则显示该对话框。void forceShow();Q_SIGNALS:void canceled (); //经测试,程序员不做任何处理时,是无法通过点击取消按钮关闭本对话框的。//当点击取消按钮时,会触发此信号。默认情况下,它与cancel()插槽连接。需要手动来连接。public:using QDialog::open; //将对话框显示为窗口模态 window modal dialog对话框,并立即返回。//virtual void QDialog::open();void open(QObject * receiver, const char * member);//显示对话框的同时,指定本类 canceled()信号的槽函数。//Opens the dialog and connects its canceled() signal to the//  slot specified by receiver and member.//The signal will be disconnected from the slot when the dialog is closed.}; //完结 class QProgressDialog : public QDialogQT_END_NAMESPACE#endif // QPROGRESSDIALOG_H

(8)

谢谢

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习游戏制作记录(技能系统)7.24

1.技能系统概念首先让我们了解一下游戏的技能本质是什么&#xff0c;以投掷剑为例子&#xff0c;当玩家使用这个技能时&#xff0c;首先会播放玩家的动画&#xff0c;随后通过技能脚本创建一个剑的对象&#xff0c;当剑回收时会再次调用脚本&#xff0c;让它朝向玩家飞来并销毁…

外部存档(External Archive)机制

前言 提醒&#xff1a; 文章内容为方便作者自己后日复习与查阅而进行的书写与发布&#xff0c;其中引用内容都会使用链接表明出处&#xff08;如有侵权问题&#xff0c;请及时联系&#xff09;。 其中内容多为一次书写&#xff0c;缺少检查与订正&#xff0c;如有问题或其他拓展…

MybatisPlus操作方法详细总结

摘要&#xff1a;本文围绕 MyBatis-Plus 数据操作展开&#xff0c;涵盖标准数据层 CRUD 与分页查询&#xff1b;以及各种的复杂 SQL 查询&#xff1b;映射匹配&#xff08;TableField、TableName 注解&#xff09;与 ID 生成策略&#xff08;TableId 五种类型及全局配置&#x…

【C语言进阶】动态内存管理的面试题||练习

本节内容专门整理了一些动态内存管理的面试题&#xff0c;配有详细的解答。 目录 1. 看代码说结果 2. 看代码说结果 3. 看代码说结果 4.小乐乐与欧几里得 描述 分析1&#xff1a; 分析2&#xff1a; 代码&#xff1a; 5. 空心正方形 分析&#xff1a; 1. 看代码说结…

【图论】倍增与lca

void dfs(long u,long father){ dep[u]dep[father]1;//只在这里初始化depfor(long i1;(1<<i)<dep[u];i)fa[u][i]fa[fa[u][i-1]][i-1];//只这里用的倍增for(long ihead[u];~i;iedge[i].next){long vedge[i].to;if(vfather)continue;fa[v][0]u;dfs(v,u); }} long lca(lo…

VS Code 美化插件

目录1. Better Comments 更好的注释2. indent-rainbow 彩虹的缩进3. Trailing Spaces 尾随的空格4. Gruvbox Material 护眼的材质5. Md Editor 博客编辑器6. 待补充推荐笔记&#xff1a;VS Code写代码必备的五款代码美化插件 1. Better Comments 更好的注释 Better Comments Be…

火语言 RPA 在日常运维中的实践

在系统运维和技术支持工作中&#xff0c;总有一些操作像 “固定程序” 一样循环往复&#xff1a;定期检查服务器状态、批量处理用户权限申请、手动清理系统日志…… 这些工作步骤固定、逻辑简单&#xff0c;却占用了大量本可用于故障排查和系统优化的时间。近期在优化运维团队的…

FOUPK3system5XOS系统 NTX V2.0发布通知

FOUPK3system5XOS系统NTX V2.0发布通知更新1.系统安全&#xff1a;使用FOUPK3system5XOS NOS X9新内核与FOUPK3system5XOS系统19.63正式版一样提供更好的安全性2.原生应用&#xff1a;启用FOUPK3system5XOS ONS X9 API 72服务FOUPK3system5XOS系统 NTX V2.0用户支持使用FOUPK3…

爬虫算法原理解析

文章目录 核心算法原理 1. 图遍历算法 广度优先搜索(BFS) 深度优先搜索(DFS) 2. URL调度算法 优先级队列调度 3. 页面去重算法 基于哈希的去重 基于布隆过滤器的去重 4. 链接提取与规范化 5. 抓取频率控制算法 6. 增量爬取算法 高级算法策略 1. PageRank算法在爬虫中的应用 2. …

探索双链表:C语言中的链式结构魔法

目录 引言 一、双链表基础 1.1、什么是双链表&#xff1f; 1.2、双链表节点的结构定义 二、双链表的基本操作 2.1、双链表的初始化 2.2、尾插法 2.3、头插 2.4、判断双链表是否为空 2.5、尾删法 2.6、头删法 2.7、查找 2.8、双链表在指定位置之前插入 2.9、双链表…

HTML5 + CSS3模拟西门庆、武大郎和潘金莲的精彩520微信聊天,看完我又相信爱情了

今天520了&#xff0c;我用HTML5 CSS3模拟了西门庆、武大郎和潘金莲的精彩微信聊天&#xff0c;希望你看完以后可以在紧张的工作中&#xff0c;放松一下&#xff0c;开心一下&#xff0c;同时祝你在这个520可以过得开心快乐。 目录 1 实现思路 1.1 聊天实现素材 1.2 HTML布…

【Linux】Linux了解与基本指令(1)

hello~ 很高兴见到大家! 这次带来的是C中关于Linux基本指令这部分的一些知识点,如果对你有所帮助的话,可否留下你宝贵的三连呢? 个 人 主 页: 默|笙 文章目录一、认识Linux二、操作系统&#xff08;OS&#xff09;三、基本指令1. 目录与普通文件1.1 目录1.2 普通文件2. pwd 与…

dify 学习笔记

目录 启动项目 浏览器访问&#xff1a; dify删除工作流 代码是开源dify 启动项目 cd E:\project\qwen\dify-main\docker docker compose up -d 浏览器访问&#xff1a; http://127.0.0.1/apps dify删除工作流 右下角&#xff0c;三个点&#xff0c;点击弹出框&#xff0…

【YOLOv8改进 - 特征融合】FCM:特征互补映射模块 ,通过融合丰富语义信息与精确空间位置信息,增强深度网络中小目标特征匹配能力

YOLOv8目标检测创新改进与实战案例专栏 专栏目录: YOLOv8有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例 专栏链接: YOLOv8基础解析+创新改进+实战案例 文章目录 YOLOv8目标检测创新改进与实战案例专栏 介绍 摘要 文…

算法训练营day30 贪心算法④ 重叠问题 452. 用最少数量的箭引爆气球、435. 无重叠区间 、 763.划分字母区间

贪心算法的第四篇博客&#xff0c;主要是重叠问题的练习&#xff0c;思路都较为简单&#xff0c;最后一题可能需要着重思考一下 452. 用最少数量的箭引爆气球 遍历数组&#xff0c;如果存在重叠则减少一支箭&#xff08;不重叠则增加一支箭&#xff09; 重叠的判定&#xff1a…

Gradio, Streamlit, Dash:AI应用开发的效率之选

在人工智能时代&#xff0c;如何快速将模型原型转化为交互式应用&#xff0c;是许多开发者面临的挑战。Gradio、Streamlit 和 Dash 作为流行的Python框架&#xff0c;各自以其独特的优势&#xff0c;帮助我们高效地构建AI应用界面。本文将深入对比这三大框架的优缺点、适用场景…

数学基础弱能学好大数据技术吗?

很多同学刚进入大学&#xff0c;一听到“大数据”“数据分析”这些词&#xff0c;就觉得必须得是数学大佬才能玩得转。高数线代概率论&#xff0c;光听名字就头大&#xff0c;更别说那些复杂的公式和推导了。但事实真的是这样吗&#xff1f;数学不好&#xff0c;就不能学大数据…

子进程信号处理

SIGCHLD 信号详解‌‌一、信号定义与作用‌‌SIGCHLD‌ 是 UNIX/Linux 系统中由内核向父进程发送的信号&#xff0c;用于通知子进程的状态变化&#xff08;如终止、停止或恢复&#xff09;‌。其主要作用包括&#xff1a;‌回收子进程资源‌&#xff1a;避免子进程终止后成为僵…

WPF 项目设置应用程序图标和设置程序集图标

在 WPF 项目中更改生成的可执行文件&#xff08;.exe&#xff09;图标需要完成两个关键步骤&#xff1a;设置应用程序图标和设置程序集图标。以下是详细操作指南&#xff1a; 第一步&#xff1a;准备图标文件 准备一个 .ico 格式的图标文件&#xff08;必须使用 ICO 格式&…

JMeter压测黑马点评优惠券秒杀的配置及请求爆红问题的解决(详细图解)

目录 一、前言 二、优惠券秒杀压测配置 三、已配置token但是请求全部爆红的问题 四、配置JSON断言后的效果 一、前言 在学习黑马点评优惠券秒杀功能的压力测试时&#xff0c;由于老师没有任何引导而是直接开始测试&#xff0c;所以本博客记录一下JMeter压测黑马点评优惠券秒…