前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt创建任务栏进度条

Qt创建任务栏进度条

作者头像
24K纯开源
发布2018-12-26 16:04:08
1.8K0
发布2018-12-26 16:04:08
举报
文章被收录于专栏:24K纯开源24K纯开源

一、正文

    任务栏进度条是Windows7就引入的一种UI形式,通常用于显示软件当前正在执行的任务的进度(如编译程序的进度、下载任务的进度)。如下:

     在Qt中使用任务栏进度条也是非常容易的一件事情。Qt框架针对Windows提供了一个单独的模块WinExtras。这个模块中提供了一些类库和函数,用于实现Windows上特有的功能,如类型转换、句柄操作、窗口属性设置等。当然也包括了此次我们要说的任务栏进度条。那么就直接来看代码吧:

代码语言:javascript
复制
#include "TaskbarProgress.h"

#include <QAbstractButton>
#include <QTimer>

TaskbarProgress::TaskbarProgress(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    timer = new QTimer;
    timer->setInterval(1000);
    timer->setSingleShot(false);
    
    windowsTaskbarButton = new QWinTaskbarButton(this);    //Create the taskbar button which will show the progress
    connect(timer, &QTimer::timeout, this, &TaskbarProgress::onTimeout);
    connect(ui.startButton, &QAbstractButton::clicked, this, &TaskbarProgress::onButtonClicked);
}

void TaskbarProgress::onButtonClicked() {
    windowsTaskbarButton->setWindow(windowHandle());    //Associate the taskbar button to the progress bar, assuming that the progress bar is its own window
    windowsTaskbarProgress = windowsTaskbarButton->progress();
    windowsTaskbarProgress->setRange(0, 100);
    timer->start();
}

void TaskbarProgress::onTimeout() {
    windowsTaskbarProgress->setValue(windowsTaskbarProgress->value() + 1);
    windowsTaskbarProgress->show();
}

    代码逻辑简单,点击开始按钮之后开始设置任务栏进度条。注意到这里有个坑,windowHandle()调用要在窗口显示出来之后才能返回正确的窗口句柄,否则返回的null,导致任务栏进度条无法正常显示。

二、参考链接

1. https://forum.qt.io/topic/70672/windowhandle-will-return-null

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、正文
  • 二、参考链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档