QT实现升级进度条页面

一.功能说明

在Qt中实现固件升级的进度条显示窗口,你可以通过创建一个自定义的对话框(Dialog)来完成。这个对话框可以包含一个进度条(QProgressBar)、一些文本标签(QLabel)用于显示状态信息,以及可能的按钮(如取消按钮)来允许用户中断升级过程(尽管在固件升级期间取消操作可能不被支持或需要谨慎处理)。

二.代码实现

1.frmupgrade.h

#ifndef FRMUPGRADE_H

#define FRMUPGRADE_H

#include <QDialog>

#include <QTimer>

namespace Ui {

class frmupgrade;

}

class frmupgrade : public QDialog

{

Q_OBJECT

public:

explicit frmupgrade(QWidget *parent = nullptr);

~frmupgrade();

public:

void upgrade_start();

private slots:

void Timer1UpDate();

void on_pushButton_clicked();

protected:

void closeEvent(QCloseEvent *event) override;

private:

Ui::frmupgrade *ui;

void Init();

QTimer *timer1 = nullptr;

int count;

};

#endif // FRMUPGRADE_H

2.frmupgrade.cpp

#include "frmupgrade.h"

#include "ui_frmupgrade.h"

frmupgrade::frmupgrade(QWidget *parent) :

QDialog(parent),

ui(new Ui::frmupgrade)

{

ui->setupUi(this);

Init();

}

frmupgrade::~frmupgrade()

{

delete ui;

}

void frmupgrade::closeEvent(QCloseEvent *event)

{

if(timer1 != nullptr){

timer1->stop();

delete timer1;

timer1 = nullptr;

}

}

/*升级界面初始化*/

void frmupgrade::Init()

{

ui->label_upgrade->hide();

ui->pushButton->hide();

ui->progressBar->setMinimum(0);

ui->progressBar->setMaximum(100);

ui->progressBar->setValue(0);

ui->progressBar->setStyleSheet("QProgressBar{border:1px solid skyblue;"

"background:white;"

"text-align:center;"

"color: red;"

"border-radius:0px;}"

"QProgressBar::chunk{"

"border-radius:0px;" // 斑马线圆角

"border:0px solid black;" // 黑边,默认无边

"background-color:green;"

"width:30px;margin:0.5px;}" // 宽度和间距

);

ui->progressBar->setOrientation(Qt::Horizontal);

count = 0;

if(timer1 != nullptr)

{

delete timer1;

timer1 = nullptr;

}

timer1 = new QTimer();

timer1->start(200);

connect(timer1, SIGNAL(timeout()), this, SLOT(Timer1UpDate()));

}

/*定时器读取升级进度*/

void frmupgrade::Timer1UpDate()

{

count = count+2 ; //10s进度条完成

ui->progressBar->setValue(count);

if(count>=100){

timer1->stop();

delete timer1;

timer1 = nullptr;

ui->label_upgrade->show();

ui->pushButton->show();

ui->label_upgrade->setText(tr("升级完成,请5秒后再重启设备!"));

}

}

/*关闭窗口*/

void frmupgrade::on_pushButton_clicked()

{

this->close();

}

void frmupgrade::upgrade_start()

{

Init();

this->show();

}

3.界面展示

完整工程代码下载:https://mp.csdn.net/mp_download/manage/download/UpDetailed

相关推荐
Sammyyyyy1 小时前
2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
开发语言·javascript·node.js
William一直在路上1 小时前
Python数据类型转换详解:从基础到实践
开发语言·python
看到我,请让我去学习2 小时前
Qt— 布局综合项目(Splitter,Stacked,Dock)
开发语言·qt
创想未来CTF2 小时前
Qt同步处理业务并禁用按钮
qt
GUET_一路向前2 小时前
【C语言防御性编程】if条件常量在前,变量在后
c语言·开发语言·if-else·防御性编程
曳渔2 小时前
UDP/TCP套接字编程简单实战指南
java·开发语言·网络·网络协议·tcp/ip·udp
三千道应用题2 小时前
WPF&C#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
开发语言·c#·wpf
hqxstudying3 小时前
JAVA项目中邮件发送功能
java·开发语言·python·邮件
咪咪渝粮3 小时前
JavaScript 中constructor 属性的指向异常问题
开发语言·javascript
最初的↘那颗心3 小时前
Java HashMap深度解析:原理、实现与最佳实践
java·开发语言·面试·hashmap·八股文