QT上位机开发(进度条操作)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        进度条是一个比较常见的控件。如果某个操作需要很长的时间才能完成,那么这个时候最好有一个进度条提示,这样比较容易平复一下用户焦急的情绪。平时大家使用的编译软件、下载软件、解压软件、烧录软件等等,一般都会有这样的进度条提示。今天,正好接着这个机会,学学qt下面进度条是怎么进行使用的。

1、创建一个基础qt widget软件

        为了测试进度条的用法,有必要创建对应的按钮和进度条,所以需要首先创建一个qt widget工程。

2、利用qt designer添加进度条控件

        窗口中,我们一共添加了三个控件。除了必不可少的进度条之外,还添加了两个button。一个button负责定时更新进度条;另外一个呢,则负责停止进度条的更新。最终设计出来的效果是这样的,比较简单,

3、代码编写

        首先是头文件。因为窗体中涉及到了两个按钮,那么按钮的回调函数肯定是要添加上的。此外,由于模拟进度条,涉及到进度条的更新,因此也有必要模拟一个定时器。差不多就这些内容。

#pragma once#include <QtWidgets/QMainWindow>
#include <QTimer>
#include "ui_QtWidgetsApplication.h"class QtWidgetsApplication : public QMainWindow
{Q_OBJECTpublic:QtWidgetsApplication(QWidget *parent = nullptr);~QtWidgetsApplication();private:Ui::QtWidgetsApplicationClass ui;QTimer* p_timer;private slots:void ok_clicked();void cancel_clicked();void update();};

        完成了头文件之后,接下来就是cpp文件的更新。主要实现的内容,也是之前说的三个函数,即ok按钮回调函数、cancel按钮回调函数、定时器回调函数。ok按钮被按下去之后,立即触发定时器。在定时器回调函数中,每次触发的时候,计数器+1,更新进度条,这个过程一直到进度条达到100%的时候停止。而cancel按钮呢,如果触发,则停止定时器,这样也就同步停止了进度条的更新。

#include "QtWidgetsApplication.h"// construct function
QtWidgetsApplication::QtWidgetsApplication(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);p_timer = NULL;ui.progressBar->setRange(0, 100);ui.progressBar->setValue(0);connect(ui.pushButton_1, &QPushButton::clicked, this, &QtWidgetsApplication::ok_clicked);connect(ui.pushButton_2, &QPushButton::clicked, this, &QtWidgetsApplication::cancel_clicked);
}// destruct function here
QtWidgetsApplication::~QtWidgetsApplication()
{if (p_timer) delete p_timer;
}// ok button callback function
void QtWidgetsApplication::ok_clicked()
{if (p_timer){p_timer->stop();delete p_timer;p_timer = NULL;}ui.progressBar->setValue(0);p_timer = new QTimer(this);connect(p_timer, SIGNAL(timeout()), this, SLOT(update()));p_timer->start(20); // 20ms is interval
}// cancel button callback function
void QtWidgetsApplication::cancel_clicked()
{if (p_timer){p_timer->stop();delete p_timer;p_timer = NULL;}
}// timer update function
void QtWidgetsApplication::update()
{int value = ui.progressBar->value();if (value < 100){value += 1;ui.progressBar->setValue(value);}else if(p_timer){p_timer->stop();delete p_timer;p_timer = NULL;}
}

4、编译和测试

        测试的时候主要集中在这几个地方。第一,整体是否编译ok;第二,ok按钮按下去的时候,进度条是否更新,达到100%的时候是否停住;第三,假设进度条正在更新,那么cancel按钮按下去的时候,进度条是否立即停止更新。如果上面几点都没有问题,那么代表软件整体上设计是ok的,否则就要回去debug一下是什么地方出了问题。

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

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

相关文章

网络端口映射和端口转发的区别和联系

目 录 一、端口映射技术 1.1 原理 1.2 应用场景 1、远程访问 2、游戏主机 3、文件共享 4、监控视频共享 二、端口转发技术 2.1 原理 2.2 应用场景 1、网络负载均衡 2、网络安全 3、网络代理 三、端口映射和转发的实现方法 3.1 路由器配置 3.2 网络防火墙 …

Jupyter Notebook五分钟基础速通

1 作用 常用于数据分析 2 安装 2.1 Anaconda 通过直接安装Anaconda&#xff0c;会自动安装Jupyter Notebook 2.2 命令行安装 ① 3.x版本 pip3 install --upgrade pip pip3 install jupyter ② 2.x版本 pip install --upgrade pip pip install jupyter 3 启动 cmd窗口下…

主动自动智能、全天在线值守!浪潮信息InService托维服务平台V2.0焕新升级

日前&#xff0c;浪潮信息发布了InService托维服务平台2.0版本&#xff0c;新增了自动化微码版本推荐、硬盘故障智能预测、服务报告自助订阅等功能模块。该平台对接入设备可7*24小时在线监测&#xff0c;量化评估设备状态&#xff0c;提前预警故障&#xff0c;实现主动式服务。…

Android Matrix绘制PaintDrawable设置BitmapShader,手指触点为圆心scale放大原图,Kotlin

Android Matrix绘制PaintDrawable设置BitmapShader&#xff0c;手指触点为圆心scale放大原图&#xff0c;Kotlin 在 Android基于Matrix绘制PaintDrawable设置BitmapShader&#xff0c;以手指触点为中心显示原图的圆切图&#xff0c;Kotlin&#xff08;4&#xff09;-CSDN博客 的…

【计算机网络】【新加坡南洋理工大学】【Computer Control Network】【广域网和局域网简介】【中英对照(自译)】

一、说明 仅供学习使用。 二、广域网&#xff08;WAN&#xff09;和局域网&#xff08;LAN&#xff09;简介

【文档数据库】ES和MongoDB的对比

目录 1.由文档存储牵出的问题 2.什么是MongoDB&#xff1f; 3.ES和MongoDB的对比 1.由文档存储牵出的问题 本文或者说关于mongodb的这个系列文章的源头&#xff1a; 前面我们聊过了分布式链路追踪系统&#xff0c;在基于日志实现的分布式链路追踪的方式seluthzipkin中为了…

企业如何在新媒体领域做好风险管理?

为了企业能更加放心地进行新媒体营销活动&#xff0c;矩阵通向企业提供一套完整的新媒体风险管控机制&#xff0c;支持企业新媒体矩阵账号体检、敏感内容违规检测、实时监测多平台负面用户信息。 矩阵通是新榜旗下的新媒体数字化内容资产管理SaaS&#xff0c;可以帮助企业解决跨…

Spring Boot - 利用Resilience4j-RateLimiter进行流量控制和服务降级

文章目录 Resilience4j概述Resilience4j官方地址Resilience4j-RateLimiter微服务演示Payment processorPOM配置文件ServiceController Payment servicePOMModelServiceRestConfigController配置验证 探究 Rate Limiting请求三次 &#xff0c;观察等待15秒连续访问6次 Resilienc…

Spring MVC学习之——RequestMapping注解

RequestMapping注解 作用 用于建立请求URL和处理请求方法之间的对应关系。 属性 value&#xff1a;指定请求的实际地址&#xff0c;可以是一个字符串或者一个字符串列表。 value可以不写&#xff0c;直接在括号中写&#xff0c;默认就是value值 RequestMapping(value“/hel…

【树莓派】网线远程连接电脑和树莓派,实现SSH连接

目录 1、硬件连接&#xff1b; 2、电脑端&#xff1a; 3、查找树莓派的IP地址 4、开启树莓派的SSH接口 5、putty 6、命令行 参考文章 通过网线连接笔记本与树莓派 开启SSH和VNC功能 无显示器安装树莓派 实现&#xff1a;打开putty输入树莓派地址使用ssh方式登陆&…

Verilog刷题笔记17

题目&#xff1a; For hardware synthesis, there are two types of always blocks that are relevant: Combinational: always (*) Clocked: always (posedge clk) Clocked always blocks create a blob of combinational logic just like combinational always blocks, but …

Qt/QML编程之路:小键盘keyboard(36)

小键盘对于qml应用是经常用到的,在qml里面,就如一个fileDialog也要自己画一样,小键盘keyboard也是要自己画的,对于相应的每个按键的clicked都要一一实现的。 这里有一个示例: 代码如下: import QtQuick 2.5 import QtQuick.Controls 1.4 import QtQuick.Window 2.0 im…