QT 任务栏进度条

简述

我们下载东西的时候都会想知道自己下载多少了,还有多久可以下完,但是我们也不可能一直盯着程序中的进度条看,还要去做别的事。这时候任务栏进度条就有用了,我们可以在做别的事时只需要看任务栏进度条就能够知道下载的进度了,很多软件都有这样的功能,比如谷歌浏览器、迅雷。

                                                                      

Qt也可以实现这样的功能,使用QT自带的QWinTaskBarButton和QWinTaskBarProgress就可以实现这样的功能。

 


效果展示

 


代码实现

要使用QWinTaskBarButton和QWinTaskBarProgress需要先早pro文件中加入:

win32:QT += winextras

taskbarprogress.h文件

#ifndef TASKBARPROGRESS_H
#define TASKBARPROGRESS_H

#include <QMainWindow>
#include <QTimer>
#include <QAbstractButton>
#include <QWinTaskbarProgress>
#include <QWinTaskbarButton>


namespace Ui {
class TaskbarProgress;
}

class TaskbarProgress : public QMainWindow
{
    Q_OBJECT

public:
    explicit TaskbarProgress(QWidget *parent = 0);
    ~TaskbarProgress();

    void onButtonClicked();

    void onTimeout();

private:
    Ui::TaskbarProgress *ui;

    QTimer *timer;

    QWinTaskbarButton *windowsTaskbarButton;

    QWinTaskbarProgress *windowsTaskbarProgress;
};

#endif // TASKBARPROGRESS_H

taskbarprogress.cpp文件 

#include "taskbarprogress.h"
#include "ui_taskbarprogress.h"

TaskbarProgress::TaskbarProgress(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::TaskbarProgress)
{
    ui->setupUi(this);

    timer = new QTimer;
    timer->setInterval(1000);     //设置时间间隔

    //创建显示进度的任务栏按钮
    windowsTaskbarButton = new QWinTaskbarButton(this);
    connect(timer, &QTimer::timeout, this, &TaskbarProgress::onTimeout);
    connect(ui->Btn_Start, &QAbstractButton::clicked, this, &TaskbarProgress::onButtonClicked);
}

TaskbarProgress::~TaskbarProgress()
{
    delete ui;
}

void TaskbarProgress::onButtonClicked() {
    //将任务栏按钮关联到进度栏,假设进度栏是它自己的窗口
    windowsTaskbarButton->setWindow(windowHandle());
    windowsTaskbarProgress = windowsTaskbarButton->progress();
    windowsTaskbarProgress->setRange(0, 100);
    timer->start();
}

void TaskbarProgress::onTimeout() {
    //当进度条的值发生变化时,更改任务栏中的进度值
    windowsTaskbarProgress->setValue(windowsTaskbarProgress->value() + 20);
    windowsTaskbarProgress->show();
    if (windowsTaskbarProgress->value() > 99) {
        windowsTaskbarProgress->setValue(0);
        timer->stop();
    }
}
 
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值