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_OBJECT

public:
    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.mfbz.cn/a/327638.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

价值7500的在线授权网站源码支持IP+域名+双向授权全开源

PHP授权验证更新系统完整版&#xff0c;一键更新系统&#xff0c;一键卡密生成自助授权功能&#xff0c;域名ip双重验证功能等等 修复盗版检测&#xff0c;确保实时查看盗版 修复在线加密系统&#xff0c;一键加密 授权系统几乎所有的程序都能整合使用,包括您的app和计算机程序…

OpenCV——八邻域断点检测

目录 一、理论基础1、八邻域2、断点检测 二、代码实现三、结果展示四、参考链接 OpenCV——八邻域断点检测由CSDN点云侠原创&#xff0c;爬虫自重。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫。 一、理论基础 1、八邻域 图1 八邻域示意图 图…

debian12部署Gitea服务

首先安装git、wget、sqlite&#xff0c;然后进行用户和组的相关设置 sudo apt install -y git wget sqlite3 新增一个git用户与一个git组 sudo adduser --system --group --disabled-password --shell /bin/bash --home /home/git --gecos Git Version Control git 给git用户设…

Echarts 对饼状图上的各模块添加点击事件

文章目录 需求分析 需求 实现 echarts 中饼图点击区块事件 分析 当用户点击饼状图上的各个模块时&#xff0c;我们可以通过 JavaScript 监听 click 事件来实现相应的交互逻辑。 <!DOCTYPE html> <html> <head><meta charset"utf-8"><…

vmware16安装centos9stream

此次下载的是centos9 stream &#xff0c;使用vmware16。因为centos9stream版本比较新&#xff0c;所以vmware16无法识别此系统&#xff0c;不过无伤大雅。但是可能会导致兼容性问题&#xff0c;比如开机关机会很慢&#xff0c;建议还是用vmware17&#xff01; 下载镜像文件&a…

什么是MongoDB

概念&#xff1a; MongoDB 是一个文档数据库&#xff08;以 JSON 为数据模型&#xff09;&#xff0c;由 C 语言编写&#xff0c;旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中…

vue3-列表渲染

v-for 我们可以使用 v-for 指令基于一个数组来渲染一个列表。 v-for 指令的值需要使用 (item in items) 形式的特殊语法&#xff0c;其中 items 是源数据的数组&#xff0c;而 item 是迭代项的别名&#xff0c; (item, index) in items index 表示当前项的位置索引(可选参数)…

MySQL-多表联合查询

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

自带操作屏幕,还有AI附体的耳夹式耳机,Sanag塞那S5 Pro体验

如今耳机已经成为了我们生活中不可或缺的存在&#xff0c;很多朋友都喜欢那种能让自己获得身临其境的听觉体验的耳机。但是&#xff0c;传统的入耳式耳机常常会导致耳朵不适&#xff0c;而且特别不适合在户外使用。我最近发现了一款设计很特殊的耳机&#xff0c;就是这副sanag塞…

部署Tomcat

Tomcat简介 名称由来&#xff1a;Tomcat最初是由 Sun的软件构架师詹姆斯邓肯戴维森开发的&#xff0c;后来他帮助将其变 为开源项目&#xff0c;并由Sun贡献给Apache软件基金会&#xff0c;由于大部分开源项目OReilly都会出一本相关的 书&#xff0c;并且将其封面设计成某个动物…

深度解析JVM类加载器与双亲委派模型

概述 Java虚拟机&#xff08;JVM&#xff09;是Java程序运行的核心&#xff0c;其中类加载器和双亲委派模型是JVM的重要组成部分。本文将深入讨论这两个概念&#xff0c;并解释它们在实际开发中的应用。 1. 什么是类加载器&#xff1f; 类加载器是JVM的一部分&#xff0c;负…

如何使用“通义听悟”提高工作和学习效率

如何使用通义听悟提高工作和学习效率 通义听悟是一款利用人工智能技术&#xff0c;自动为音频和视频内容提供转写、翻译、总结、检索等功能的在线工具。它可以在会议、学习、访谈、培训等场景下&#xff0c;帮助您记录、阅读、整理、复习音视频信息&#xff0c;成为您的工作和…

七、Qt 信号和槽

在QT4以上的版本&#xff0c;在窗体上用可以通过选中控件&#xff0c;然后点击鼠标右键单击按钮&#xff0c;选择“转到槽”。可以自动创建信号和槽。 选择clicked(),并点击 ok Qt Creator会给头文件和代码文件自动添加 这个按钮的单击事件&#xff08;信号和槽&#xff09;。 …

智谱推出新一代基座大模型GLM-4

今天智谱推出新一代基座大模型GLM-4。 GLM-4 新一代基座大模型GLM-4&#xff0c;整体性能相比GLM3全面提升60%&#xff0c;逼近GPT-4&#xff1b;支持更长上下文&#xff1b;更强的多模态&#xff1b;支持更快推理速度&#xff0c;更多并发&#xff0c;大大降低推理成本&…

Linux中放大字体

环境&#xff1a;VMware17Pro&#xff0c;Ubuntu22.04 在显示设置外观中只看到图标放大的调整&#xff0c;没看到字体大小设置 不按照常规设置&#xff0c;点开下面的辅助功能->大号文本&#xff08;没有设置具体字号的选项&#xff0c;但是可以放大&#xff09; 效果图如下…

基础面试题整理5

1.事务基本特性 A(原子性)&#xff1a;要么全部成功&#xff0c;要么全部失败&#xff1b;C(一致性)&#xff1a;程序设计要与业务逻辑相匹配&#xff1b;I(隔离性)&#xff1a;事务之间是互不干扰的&#xff1b;D(持久性)&#xff1a;事务提交后数据会存储到磁盘中&#xff1b…

建造者模式深入理解:演示建造单个和多个产品的实践,结合模板模式,通俗易懂

首先呢看下建造者的定义是什么样的&#xff0c;先读一遍 建造者模式 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它主要用于将一个复杂对象的构建过程与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表现形式。这种模式…

圈小猫游戏HTML源码

源码介绍 圈小猫游戏html源码&#xff0c;HTMLCSSJS,记事本可以打开修改内容&#xff0c;电脑本地双击index.html即可运行&#xff0c;也可以上传到服务器上面运行&#xff0c;喜欢的同学可以拿去使用 下载地址 蓝奏云&#xff1a;https://wfr.lanzout.com/iFkVc1lb5akj CS…

pytorch一致数据增强—独用增强

前作 [1] 介绍了一种用 pytorch 模仿 MONAI 实现多幅图&#xff08;如&#xff1a;image 与 label&#xff09;同用 random seed 保证一致变换的写法&#xff0c;核心是 MultiCompose 类和 to_multi 包装函数。不过 [1] 没考虑各图用不同 augmentation 的情况&#xff0c;如&am…

【C++】- 类和对象(构造函数!!explicit关键字stastic关键字!!详解)

类和对象④ 构造函数初始化列表explicit关键字static成员 构造函数初始化列表 我们已经初步了解了构造函数------->类和对象②那么调用构造函数就是给了对象中各个成员变量一个合适的初始值。 但实际上&#xff0c;我们想要做的是初始化成员变量&#xff0c;在构造函数中对…
最新文章