C++ Qt开发:ProgressBar进度条组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍ProgressBar进度条组件的常用方法及灵活运用。
ProgressBar(进度条)是在Qt中常用的用户界面组件之一,用于显示任务的完成进度。它通常以一个水平或垂直的条形图形式展示,表示任务已完成的比例。进度条组件提供了一种直观的方式来显示任务的进度,让用户清晰地了解任务的完成情况。其还可根据需要在水平或垂直方向上显示,以适应不同的界面布局。
以下是QProgressBar类的一些常用方法的说明和概述,以表格形式列出:
| 方法 | 描述 |
|---|---|
QProgressBar(QWidget *parent = nullptr) |
构造函数,创建一个组件对象。 |
setRange(int minimum, int maximum) |
设置组件的范围,即任务的最小和最大值。 |
setValue(int value) |
设置组件的当前值,即任务已完成的进度。 |
value() const |
获取组件的当前值。 |
setMinimum(int minimum) |
设置组件的最小值。 |
setMaximum(int maximum) |
设置组件的最大值。 |
reset() |
重置组件,将当前值设置为最小值。 |
minimum() const |
获取组件的最小值。 |
maximum() const |
获取组件的最大值。 |
text() const |
获取组件显示的文本,通常是百分比值。 |
setFormat(const QString &format) |
设置组件显示文本的格式,支持百分比等。 |
setAlignment(Qt::Alignment alignment) |
设置组件文本的对齐方式。 |
setInvertedAppearance(bool invert) |
设置组件是否显示为反向进度(从右到左)。 |
setOrientation(Qt::Orientation orientation) |
设置组件的方向,可以是水平或垂直。 |
setStyleSheet(const QString &styleSheet) |
设置组件的样式表。 |
setFormat(const QString &format) |
设置组件的显示格式。 |
setAlignment(Qt::Alignment alignment) |
设置组件文本的对齐方式。 |
这些方法提供了对QProgressBar进行配置、管理和与之交互的灵活性。你可以根据具体的应用需求使用这些方法,使QProgressBar在你的Qt应用程序中按照期望的方式工作。
说到进度条组件就不得不提起定时器类,因为进度条组件往往需要配合定时器一起使用,QTimer是 Qt 中用于创建定时器的类,它允许你在一段时间间隔后执行特定的操作。以下是 QTimer 类的一些常用方法的说明和概述,以表格形式列出:
| 方法 | 描述 |
|---|---|
QTimer(QObject *parent = nullptr) |
构造函数,创建一个定时器对象。 |
start(int msec) |
启动定时器,指定触发时间间隔(以毫秒为单位)。 |
stop() |
停止定时器,阻止进一步的定时触发。 |
setInterval(int msec) |
设置定时器的触发时间间隔。 |
setSingleShot(bool singleShot) |
设置定时器是单次触发还是重复触发。 |
isActive() const |
检查定时器是否处于活动状态。 |
remainingTime() const |
返回离下一次定时器触发还有多少时间,如果不活动返回 -1。 |
timeout |
在定时器超时时发出,可以与槽函数连接以执行相应操作。 |
setTimerType(Qt::TimerType atype) |
设置定时器的类型,可以是 PreciseTimer 或 CoarseTimer。 |
timerType() const |
返回定时器的类型。 |
setSingleShot(bool singleShot) |
设置定时器是单次触发还是重复触发。 |
interval() const |
返回定时器的触发时间间隔。 |
timeout() |
返回 timeout 信号的 QMetaObject::Connection 对象。 |
这些方法提供了对 QTimer 进行配置、管理和与之交互的灵活性。你可以根据具体的应用需求使用这些方法,使 QTimer 在你的 Qt 应用程序中按照期望的方式工作。

首先在MainWindow主函数中通过connect设置绑定定时器,并在匿名函数中对数值进行判断,如果到达了进度条最大值则直接使用my_timer->stop()停止计时,否则每次设置进度条加一,代码如下所示;
#include <QTimer>
// 全局定时器变量指针
QTimer *my_timer;
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 声明定时器
my_timer = new QTimer(this);
// 绑定一个匿名函数
connect(my_timer,&QTimer::timeout,[=]{
static int x = 0;
// 判断是否到达了进度条的最大值
if(x != 100)
{
x++;
ui->progressBar_Up->setValue(x);
ui->progressBar_Down->setValue(int(100-x));
}
else
{
x=0;
my_timer->stop();
}
});
}
当用户点击初始化按钮时,我们首先将两个进度条使用reset()属性进行重置,接着设置progressBar_Down为最大值状态,代码如下所示;
// 初始化进度条
void MainWindow::on_pushButton_clear_clicked()
{
// 清空进度条
ui->progressBar_Up->reset();
ui->progressBar_Down->reset();
// 设置递减进度条最大值100
ui->progressBar_Down->setValue(100);
}
启动与停止定时器流程一致,首先通过my_timer->isActive()来验证定时器是否启动中,日过不是则my_timer->start(100)启动,如果是则my_timer->stop()停止。
// 启动定时器,并设置周期为100毫秒
void MainWindow::on_pushButton_start_clicked()
{
if(my_timer->isActive() == false)
{
my_timer->start(100);
}
}
// 停止定时器
void MainWindow::on_pushButton_stop_clicked()
{
if(my_timer->isActive() == true)
{
my_timer->stop();
}
}
运行程序,首先点击初始化按钮设置进度条的状态值,然后读者可点击启动定时器和停止定时器,如下图所示;

C++ Qt开发:ProgressBar进度条组件的更多相关文章
- progressbar进度条组件
Progressbar 进度条组件 通过$.fn.progressbar.fn.defaults重写默认的defaults进度条(progressbar)提供了一种显示长时间操作进度的反馈.进度可被更 ...
- 第一百九十八节,jQuery EasyUI,ProgressBar(进度条)组件
jQuery EasyUI,ProgressBar(进度条)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 ProgressBar(进度条) ...
- ProgressBar( 进度条) 组件
一. 加载方式 //class 加载方式<div class="easyui-progressbar"data-options="value:60" st ...
- Android学习笔记(24):进度条组件ProgressBar及其子类
ProgressBar作为进度条组件使用,它还派生了SeekBar(拖动条)和RatingBar(星级评分条). ProgressBar支持的XML属性: Attribute Name Related ...
- Qt Quick 常用元素:ComboBox(下拉列表) 与 ProgressBar(进度条)
一.ComboBox ComboBox,即下拉列表框,由一个列表框和一个标签控件(或编辑控件)组成.ComboBox 的下拉列表是使用 Menu 实现的,列表内的每个条目对应一个 Menultem. ...
- 【Android 应用开发】 自定义 圆形进度条 组件
转载著名出处 : http://blog.csdn.net/shulianghan/article/details/40351487 代码下载 : -- CSDN 下载地址 : http://down ...
- 手把手教你实现一个 Vue 进度条组件!
最近在个人的项目中,想对页面之间跳转的过程进行优化,想到了很多文档或 npm 等都用到的页面跳转进度条,于是便想自己去实现一个,特此记录. 来看下 npm 搜索组件时候的效果: so 下面咱们一起动手 ...
- 详解Bootstrap进度条组件
在网页中,进度条的效果并不少见,如:平分系统.加载状态等,进度条组件使用了css3的transition和animation属性来完成一些特效,这些特效在IE9及IE9以下版本.Firefox的老版本 ...
- Android学习笔记- ProgressBar(进度条)
本节引言: 本节给大家带来的是Android基本UI控件中的ProgressBar(进度条),ProgressBar的应用场景很多,比如 用户登录时,后台在发请求,以及等待服务器返回信息,这个时候会用 ...
- Qt flash_eraseall nandwrite 进度条显示擦除、烧录
/***************************************************************************** * Qt flash_eraseall n ...
随机推荐
- linux tcpdump 使用小结(二)
转载请注明出处: TCPDump是一个功能强大的网络抓包工具,它能够在命令行界面捕获.分析和解析网络数据包.下面是TCPDump命令的使用总结,包括使用语法.常用参数说明等: 使用语法:tcpdump ...
- prometheus 监控实战篇
prometheus 监控 目录 prometheus 监控 1.上传tar包 2.解压到对应文件夹 3.配置开机自启动 4.配置Prometheus 5.black_exporter 监控网站状态 ...
- Code Llama:Llama 2 学会写代码了!
引言 Code Llama 是为代码类任务而生的一组最先进的.开放的 Llama 2 模型,我们很高兴能将其集成入 Hugging Face 生态系统!Code Llama 使用与 Llama 2 相 ...
- 关于TCP 四次挥手过程中的reset包问题
数据包过程 TCP状态机转换过程 客户端在接受到第32个数据包之后,应该发送1个对FIN的ACK数据包,然而客户端缺直接连续发送了3个Rest数据包36~38,客户端并未进入time wait阶段,直 ...
- 【.NET8】访问私有成员新姿势UnsafeAccessor(下)
前言 书接上回,我们讨论了在.NET8中新增的UnsafeAccessor,并且通过UnsafeAccessor访问了私有成员,这极大的方便了我们代码的编写,当然也聊到了它当前存在的一些局限性,那么它 ...
- TCP vs UDP:揭秘可靠性与效率之争
概述 今天我们开始主要讲解TCP的相关知识点.在之前讲解分层章节的时候,我们提到过一个重要观点.在网络层及以下几层,更多的是让主机与主机建立连接,也就是说你的电脑需要知道另一台电脑在哪里才能连接上它. ...
- 探秘公有IP地址与私有IP地址的区别及其在路由控制中的作用
引言 IP地址是互联网通信中至关重要的组成部分.虽然在前一章节我们讲解了IP一些基础知识,但在我们日常生活中,我们经常听到公有IP地址和私有IP地址这两个术语.那么,公有IP地址和私有IP地址有何区别 ...
- MySQL的sql_mode设置导致报错1292
在MySQL8.0的一个PXC集群中,默认的sql_mode设置如下: select @@sql_mode; +-------------------------------------------- ...
- 为什么 CSS flex 布局中没有 `justify-items` 和 `justify-self`?
为什么 CSS flex 布局中没有 justify-items 和 justify-self? 为什么在 CSS flex 布局中存在 align-items 和 align-self,却没有 ju ...
- CSS 多行文本超链接下划线动效
先看效果 乍一看,是不是感觉很简单,仔细一瞅发现事情好像没有那么简单. 如果十分钟还没想出怎么实现,那就把简历上的"精通css"改成"了解css"-- 大部分人 ...