C++ Qt开发:ProgressBar进度条组件_qt progressbar setstylesheet-程序员宅基地

技术标签: c++  qt  C语言  《Qt Creator 编程技术实践》  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) 设置定时器的类型,可以是 PreciseTimerCoarseTimer
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();
    }
}

运行程序,首先点击初始化按钮设置进度条的状态值,然后读者可点击启动定时器和停止定时器,如下图所示;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lyshark_csdn/article/details/135010126

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签