QProgressBar、QProgressDialog

2023-11-04

QProgressBar

一、描述

进度条控件,用于向用户指示操作的进度,并向他们保证应用程序仍在运行。

如果最小值和最大值都设置为 0,则条形图显示忙碌指示符,而不是步数百分比。

二、类型成员

1、enum QProgressBar::Direction:指定垂直进度条的文本阅读方向。

  • TopToBottom:文本顺时针旋转 90 度。
  • BottomToTop:文本逆时针旋转 90 度。 

请注意,是否绘制文本取决于样式。

三、属性成员

1、alignment : Qt::Alignment

进度条的对齐方式。

2、format : QString

用于生成当前文本的字符串,默认值为“%p%”

%p - 替换为完成的百分比。%v - 被当前值替换。%m - 替换为总步数。

3、invertedAppearance : bool

进度条是否显示其进度反转。

如果此属性为true,则进度条向另一个方向增长(例如,从右到左)。

4、maximum : int / minimum : int

进度条的最大值 / 最小值。设置此属性时,如有必要,会调整 minimum / maximum 以确保范围保持有效。如果当前值超出新范围,则使用 reset() 重置进度条。

      value : int

进度条的当前值。尝试将当前值更改为最小-最大范围之外的值对当前值没有影响。

5、orientation : Qt::Orientation

进度条的方向。

6、text : const QString

与进度条一起显示的描述性文本。

返回的文本与显示在进度条中心(或某些样式的左侧)的文本相同。

7、textDirection : Direction

垂直进度条文本的阅读方向。默认为 QProgressBar::TopToBottom

此属性对水平进度条没有影响。

8、textVisible : bool

是否应显示文本。样式可能会忽略此属性(例如,QMacStyle 从不绘制文本)。

四、成员函数

1、void reset()

重置进度条。

 

2、void setRange(int minimum, int maximum)

设置范围。可以使用 setRange(0, 0) 将 QProgressBar 设置为未确定状态。

如果 maximum 小于 minimum,则 minimum 成为唯一的合法值。

如果当前值超出新范围,则使用 reset() 重置进度条。

3、【信号】void valueChanged(int value)

当进度条中显示的值发生变化时,会发出此信号。value 是进度条显示的新值。

4、void initStyleOption(QStyleOptionProgressBar *option)

使用此 QProgressBar 中的值初始化选项。当子类需要一个 QStyleOptionProgressBar 但又不想自己填写所有信息时,此方法很有用。


 QProgressDialog

一、描述

进度对话框继承自 QDialog,用于向用户指示操作将花费多长时间,并证明应用程序尚未冻结。它还可以给用户一个中止操作的机会。

进度对话框的一个常见问题是很难知道何时使用它们。操作在不同的硬件上花费不同的时间。 QProgressDialog 为这个问题提供了一个解决方案:它估计操作将花费的时间(基于步骤的时间),并且仅在估计超出 minimumDuration() (默认为 4 秒)时才显示自己。

对话框会在操作结束时自动重置并隐藏。使用 setAutoReset() 和 setAutoClose() 来改变这种行为。请注意,如果设置了等于当前 value() 的新最大值,则无论如何都不会关闭对话框。

QProgressDialog 有两种使用方式:模态和非模态。

模态模式使用示例:

在循环中执行操作,间隔调用 setValue(),并使用 wasCanceled() 检查取消。

    QProgressDialog progress("正在复制文件...", "Abort Copy", 0, numFiles, this);
    progress.setWindowModality(Qt::WindowModal);

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

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

非模态的进度对话框适用于发生在后台的操作,用户可以在后台与应用程序进行交互。此类操作通常基于 QTimer(或 QObject::timerEvent())或 QSocketNotifier; 或在单独的线程中执行。

非模态模式使用示例:

需要运行一个事件循环,将 cancelled() 信号连接到一个停止操作的槽,并每隔一段时间调用 setValue()。 例如:

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);
    //... 
    steps++;
    if (steps > pd->maximum())
        t->stop();
}

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

二、属性成员

1、autoClose : bool

进度对话框是否被 reset() 隐藏。默认为 true。

2、autoReset : bool

进度对话框是否在 value() 等于 maximum() 时立即调用 reset()。默认为 true。

3、labelText : QString

标签的文本。

4、maximum : int

进度条表示的最大值。默认为 100。

5、minimum : int

进度条表示的最小值。默认值为 0。

6、minimumDuration : int

进度对话框出现之前必须经过的时间。如果任务的预期持续时间小于 minimumDuration,则根本不会出现对话框。 这可以防止为快速结束的任务弹出对话框。

如果设置为 0,则在设置任何进度后始终显示对话框。默认值为 4000 毫秒。

7、value : int

当前进度值。

要使进度对话框按预期工作,应该首先将此属性设置为 minimum(),最后将其设置为 maximum()。可以在两者之间调用 setValue() 任意次数。

如果进度对话框是模态的,setValue() 会调用 QCoreApplication::processEvents()。

8、wasCanceled : const bool

进度对话框是否被取消 。

三、成员函数

1、QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

构造一个进度对话框。

labelText 是用于提醒用户正在进行的内容的文本。

cancelButtonText 是要在取消按钮上显示的文本。如果为 QString(),则不显示取消按钮。

2、void cancel()

重置进度对话框。 wasCanceled() 变为true,进度对话框变为隐藏。

3、【信号】void canceled()

 单击取消按钮时会发出此信号。它默认连接到 cancel() 槽。

4、void forceShow()

如果在算法启动并且 minimumDuration 毫秒过去后它仍然隐藏,则显示对话框。

5、void reset()

重置进度对话框。 如果 autoClose() 为true,则进度对话框将隐藏。

6、void setCancelButtonText(const QString &cancelButtonText)

将取消按钮的文本设置为 cancelButtonText。如果文本设置为 QString() 那么它将导致取消按钮被隐藏和删除。

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

打开对话框并将其 cancelled() 信号连接到 receiver 和 member 指定的槽。

当对话框关闭时,信号将与槽断开连接。

8、void setBar(QProgressBar *bar)

设置进度条小部件。进度对话框调整大小以适应。进度对话框拥有进度条的所有权,必要时将删除该进度条,因此不要使用在堆栈上分配的进度条

9、void setCancelButton(QPushButton *cancelButton)

 将取消按钮设置为按钮cancelButton。进度对话框拥有此按钮的所有权,该按钮将在必要时被删除,因此不要传递堆栈上对象的地址。 如果传递了 nullptr,则不会显示取消按钮。

10、void setLabel(QLabel *label)

设置标签。进度对话框调整大小以适应。 标签归进度对话框所有,必要时将被删除,因此不要传递堆栈上对象的地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QProgressBar、QProgressDialog 的相关文章

  • 仅在发布模式下使用 glGenBuffer 时出现未处理的异常 - QT

    我在 Windows 7 上使用 Qt 4 8 发布模式编译项目时遇到了一些问题 调试时一切正常 但在发布时我收到未处理的异常 0xC0000005 访问冲突 我将范围缩小到发生这种情况的行 即生成像素缓冲区的时间 我的第一个猜测是 DLL
  • Qt 人工鼠标点击无法正常工作

    小玩具应用程序可以在这里找到 http gist github com 517445 http gist github com 517445 我正在尝试将人工鼠标事件发送到小部件 我使用QApplication sendEvent为此 接下
  • 如何使用 Qt DOM 通过此语法获取 xml 属性

    我正在使用 Qt DOM XML 解析器 并且遇到了如下属性定义的问题
  • Qt qDebug() 在 Windows shell 中不起作用

    我正在使用一个qDebug Qt 框架的printf屏幕上有东西 当我从 Qt Creator 运行应用程序时它工作得很好 但是当我尝试从 Windows 执行它时cmd它什么也没显示 为什么会发生这种情况 你必须添加 CONFIG con
  • 在 Qt 服务器上验证用户身份

    我正在尝试使用 C QtTcpSocket 为个人项目 多人国际象棋游戏 实现身份验证系统 我的朋友建议了一种验证用户的方法 但我想问是否有更简单或更好的方法 来自 Python 背景 做这个项目主要是为了加深对 C 的理解 我将发布我朋友
  • QComboBox 下拉项边距

    我想设计我的风格QComboBox为下拉项目留出边距 现在是这样的 我想要这样的东西 我尝试过 QComboBox QAbstractItemView item margin 3px 但它不起作用 你能帮我解决这个问题吗 您想在项目之间设置
  • new 运算符(以及 malloc)无法分配约 450 MB 的内存 [重复]

    这个问题在这里已经有答案了 我正在开发一个程序 该程序在内存中存储大约 2 2 亿个短值的数组 该数据块的分配方式如下 short arrayName new short SIZE OF ARRAY 然后将文件的内容读入内存 在团队中的另一
  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • 如何在 OS X 上的 Qt 应用程序中设置应用程序图标,足以进行分发?

    跟进这个答案 https stackoverflow com a 20918932 368896 to 这个问题 https stackoverflow com questions 20909341 what is the fastest
  • 如何让小部件在上下文菜单出现时接收鼠标释放事件

    在Ubuntu20 04上 当上下文菜单出现时 我无法让小部件接收鼠标释放事件 而Windows可以接收 我的pyqt版本是5 15 2 我考虑过手动发送鼠标释放事件 但我不知道当上下文菜单出现时哪些系统会收到鼠标释放事件 这样做可能会导致
  • QMainWindow 上的 Qt 布局

    我设计了一个QMainWindow with QtCreator s设计师 它由默认的中央小部件 aQWidget 其中包含一个QVBoxLayout以及其中的所有其他小部件 现在我想要的一切就是QVBoxLayout自动占据整个中央小部件
  • 使用 OpenGL 渲染 QImage

    与我相关的其他问题 https stackoverflow com questions 20126354 render qimage from sooffscreenrenderer in qglwidget 我认为更核心的问题是 如何渲染
  • 无法运行 Qt 应用程序:找不到版本“Qt_5”

    我运行 Ubuntu 16 04 LTS 我的问题是我无法运行可以编译的 Qt5 应用程序 这是我尝试运行它时得到的结果 home user Desktop sconfig dist Release GNU Linux SCongif us
  • QML 列表视图拖放

    我想创建两个 qml 列表视图 可以执行两个功能 拖放一个列表中的项目以更改项目的顺序 跨列表拖放项目 项目将从一个列表中删除并添加到另一个列表中 根据 Qt 文档中的拖放示例 我决定创建两个访问同一列表模型的列表视图 列表模型中的每个项目
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • 在 Qt 中,许多插槽连接到同一信号,它们在发出信号时是否按顺序调用?

    In the Qt文件说 如果多个插槽连接到一个信号 则这些插槽将 按照它们连接的顺序一个接一个地执行 当信号发出时 但在connect 功能 设置Qt ConnectionType输入为Qt QueuedConnection意思是 当控制
  • 使用 QNetworkAccessManager 的 Qt 控制台应用程序

    我正在尝试写一个Qt调用网络服务的应用程序 这是一个控制台应用程序 url 将作为命令行参数传入 我搜索了例如http程序在Qt并找到这个链接 http qt project org doc qt 5 qnetworkaccessmanag
  • Qt - 如何使用 QNetworkAccessmanager 获取响应文本

    这是我的代码 Widget Widget manager new QNetworkAccessManager this connect manager SIGNAL finished QNetworkReply this SLOT repl
  • QByteArray 到整数

    正如您可能从标题中看出的那样 我在转换QByteArray为一个整数 QByteArray buffer server gt read 8192 QByteArray q size buffer mid 0 2 int size q siz
  • QT:模块“QtWebView”未安装

    我的操作系统是win10 QT版本是Qt5 7 mingw53 32 目标操作系统是win10 当我使用qmlscene执行qml文件时 发生了一些错误 qrc qml 3 模块 QtWebView 未安装 我的 qml 文件如下 impo

随机推荐

  • Python实现定时执行脚本(1)

    前言 本文是该专栏的第11篇 后面会持续分享python的各种干货知识 值得关注 很多时候 我们需要对工作上的python脚本附加一个定时执行的功能 让脚本自动在某个时间段开始执行 当接到这样的需求时 你脑海中想到的会不会是Time模块 的
  • 关于GD32调试JLINK连接不上的问题

    最近有一个项目要用到GD32E230 然后经过了绘画原理图 PCB布线 焊接元件 再到最后一步的调试 发现用JLINK的SWD模式无论怎么也连不上 在和同事纠结了两天之后 发现了原来是PCB里面IC的封装画错了 以下把GD32和STM32官
  • 第九节:JS中的循环语句

    while语句 一般在循环体中来改变判断条件的值 如果不进行值得改变 循环条件一直满足 会造成死循环 语法 while 条件 要执行的代码块 例子 while i lt 10 text 数字是 i i do while 循环是 while
  • 功率MOSFET的正向导通等效电路

    转自 功率MOSFET的正向导通等效电路 电路设计论坛 电子技术论坛 广受欢迎的专业电子论坛 MOSFET 一 基础 Infinity lsc的博客 CSDN博客 MOSFET 二 米勒效应 Infinity lsc的博客 CSDN博客 米
  • 物联网之Linux网络编程三

    本篇主讲内容 1 广播和组播 2 UNIX域套接字 3 网络总结 广播 前面介绍的数据包发送方式只有一个接受方 称为单播 如果同时发给局域网中的所有主机 称为广播 只有用户数据报 使用UDP协议 套接字才能广播 广播地址 以192 168
  • 如何查看Oracle数据库的端口列表Portlist?

    如何查看Oracle数据库的端口列表Portlist 要在SQL PLUS工具中查看Oracle数据库的端口列表 可以执行以下步骤 在SQL PLUS中使用系统管理员帐户登录到Oracle数据库 运行以下命令 SELECT DISTINCT
  • 最大熵阈值分割算法原理及实现

    写在前面 前面介绍了OTSU算法 对于阈值分割法 不得不介绍另外一种较为突出的算法 最大熵阈值分割法 KSW熵算法 最大熵阈值分割法和OTSU算法类似 假设将图像分为背景和前景两个部分 熵代表信息量 图像信息量越大 熵就越大 最大熵算法就是
  • android FlatBuffers剖析

    概述 FlatBuffers是google最新针对游戏开发退出的高性能的跨平台序列化工具 目前已经支持C C Go Java JavaScript PHP and Python C和Ruby正在支持中 相对于json和Protocol Bu
  • Pytorch 分布式训练(DP/DDP)

    参考 需要看 0 实操教程 GPU多卡并行训练总结 以pytorch为例 1 PyTorch 源码解读之 DP DDP 模型并行和分布式训练解析 知乎 2 pytorch中分布式训练DP DDP原理 知乎 3 pytorch中多卡训练 yt
  • 共轭梯度法详细推导分析

    共轭梯度法是一种经典的优化算法 算法求解速度较快 虽然比梯度下降法复杂 但是比二阶方法简单 一 引入 1 优化模型建立 假定待优化的问题如下所示 min x f x 1 2 x T A x b T x min x f x frac 1 2
  • vs 查看 C++ #define 宏定义展开代码

    方法一 define 通常是代码的展开 如果是 复杂 的 define 如何直观的查看展开效果 在 vs 中 选中需要查看的 cpp 文件 右键属性 预处理器 预处理到文件 选择是 确定 右键 cpp 文件 编译 debug 目录中会有一个
  • 打印机驱动如何连接计算机,打印机与电脑第一次连接驱动怎么操作

    打印机作为我们办公的设备之一 在使用过程中需要与电脑完成连接 才能进行使用 很多小伙伴不知道打印机与电脑第一次连接驱动怎么操作 于是就在小编后台给小编留言 那么今天小编就来叫教教大家打印机与电脑第一次连接驱动的方法 下面就让我们一起来看看吧
  • Tomcat性能调优方案

    Tomcat性能调优方案 一 操作系统调优 对于操作系统优化来说 是尽可能的增大可使用的内存容量 提高CPU的频率 保证文件系统的读写速率等 经过压力测试验证 在并发连接很多的情况下 CPU的处理能力越强 系统运行速度越快 适用场景 任何项
  • Python3-excel文档操作(二):利用openpyxl库处理excel表格:在excel表格中插入图片

    1 简介 excel表中可以插入图片 使用openpyxl库可以实现这个功能 2 代码 coding utf 8 import os import sys import time import openpyxl from openpyxl
  • 在React中使用Swiper做触摸内容滑动

    在React中使用Swiper做触摸内容滑动 缘由 在实现一个触摸内容滑动的功能的时候 想reactJS该怎么处理呢 然后被提点用Swiper可以 一想确实可以 用了网上的一些用在react里面的Swiper 但是并不怎么靠谱和好用 最后看
  • 【改进灰狼优化算法】改进收敛因子和比例权重的灰狼优化算法【期刊论文完美复现】(Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 文献来源 4 Matlab代码实现 1 概述 文献来源
  • KBEngine简单RPG-Demo源码解析

    一 环境搭建 1 确保已经下载过KBEngine服务端引擎 如果没有下载请先下载 下载服务端源码 KBEngine https github com kbengine kbengine releases latest 编译 KBEngine
  • DRG/DIP改革激活医疗数据智能400亿新增市场| 爱分析洞见

    1 政策力度强 加速全覆盖 2021年底 国家医疗保障局印发 DRG DIP支付方式改革三年行动计划 这x标志着医保支付改革正式进入高速发展阶段 也意味着基于DRG DIP医保支付方式改革推动的医院信息化建设的大幕徐徐拉开 三年行动计划 以
  • curl命令错误码汇总

    状态码 状态原因 解释 0 正常访问 1 错误的协议 未支持的协议 此版cURL 不支持这一协议 2 初始化代码失败 初始化失败 3 URL格式不正确 URL 格式错误 语法不正确 4 请求协议错误 5 无法解析代理 无法解析代理 无法解析
  • QProgressBar、QProgressDialog

    QProgressBar 一 描述 进度条控件 用于向用户指示操作的进度 并向他们保证应用程序仍在运行 如果最小值和最大值都设置为 0 则条形图显示忙碌指示符 而不是步数百分比 二 类型成员 1 enum QProgressBar Dire