当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/444125.html

相关文章:

  • JavaWeb--纯小白笔记04:Tomcat整合IDEA
  • 【jvm】动态链接为什么需要常量池
  • HTTPS详解
  • redis作为mybaits(mybatisplus)的缓存
  • 【环境配置】AST: Asymmetric Student-Teacher Networks for Industrial Anomaly Detection
  • TinkerTool System for Mac实用软件系统维护工具
  • 物理学基础精解【9】
  • Flask-JWT-Extended登录验证
  • Altium Designer(AD)百度云下载与安装(附安装步骤)
  • 无人机视角下的车辆数据集
  • 【MYSQL】聚合查询、分组查询、联合查询
  • 使用IDA Pro动态调试Android APP
  • JS中的for...in和for...of有什么区别?
  • 【C++篇】引领C++模板初体验:泛型编程的力量与妙用
  • 在react中 使用redux
  • 计算机毕业设计python+spark知识图谱房价预测系统 房源推荐系统 房源数据分析 房源可视化 房源大数据大屏 大数据毕业设计 机器学习
  • Spring-bean的生命周期-终篇
  • Kotlin 枚举和 when 表达式(六)
  • 数字范围按位与
  • WebRTC编译后替换libwebrtc.aar时提示找不到libjingle_peerconnection_so.so库
  • Nature Electronics |无感佩戴的纤维基电子皮肤(柔性半导体器件/柔性健康监测/电子皮肤/柔性传感/纤维器件)
  • 深入剖析Docker容器安全:挑战与应对策略
  • 后端技术打怪升级之路
  • Leetcode 3296. Minimum Number of Seconds to Make Mountain Height Zero
  • 计算机毕业设计之:基于深度学习的路面检测系统(源码+部署文档+讲解)
  • 测试面试题:接口自动化测试流程?
  • Golang面试题
  • 《飞机大战游戏》实训项目(Java GUI实现)(设计模式)(简易)
  • 计算机毕业设计 基于 Hadoop平台的岗位推荐系统 SpringBoot+Vue 前后端分离 附源码 讲解 文档
  • 【数据结构与算法】LeetCode:二分查找