专栏首页24K纯开源Qt创建任务栏进度条

Qt创建任务栏进度条

一、正文

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

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

#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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • macOS packages安装时的降级处理

     在制作macOS的pkg安装包时,一般新发布的程序版本会比旧版本更高。但是有的时候我们也希望在安装的时候,对程序的某些依赖库进行降级安装。比如高版本依赖库中出...

    24K纯开源
  • 记录:编译Qt5.0连接MySql5.5数据库的驱动

    第一步 1、准备好Mysql数据库安装文件,Qt5.0完整的离线安装包,以及Qt5.0的完整的源代码。安装好程序,假设Mysql的安装路径为:C:\MySQL5...

    24K纯开源
  • Qt实现小功能之列表无限加载

    概念介绍       无限加载与瀑布流的结合在Web前端开发中的效果非常新颖,对于网页内容具备较好的表现形式。无限加载并没有一次性将内容全部加载进来,而是通过监...

    24K纯开源
  • 数据可视化-Matplotlib在线图上填充区域

    今天我们将学习如何填充Matplotlib中的线图。这不仅可以使我们的图表看起来更专业,而且我们还可以通过根据特定阈值填充区域来添加有用信息。

    亚乐记
  • 龙芯派lite如何更新pmon

    本文主要描述龙芯派lite的固件更新相关的原理。在使用龙芯派lite时,要很清楚的理解龙芯派的执行流程。

    bigmagic
  • 免费领取使用优酷会员,爱奇艺会员,腾讯会员及各大视频网站会员

    七月半夏
  • 如何在CentOS中自定义Nginx服务器的名称

    本教程可帮助您自定义主机上的服务器名称。通常,出于安全考虑,各公司会修改服务器名称。自定义nginx服务器的名称需要修改源代码。

    葡萄
  • WCF服务上应用protobuf

    protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多。...

    张善友
  • LeetCode 1138. 字母板上的路径

    我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。

    Michael阿明
  • N皇后问题(DFS)

    n-皇后问题是指将 n 个皇后放在 n∗n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。

    dejavu1zz

扫码关注云+社区

领取腾讯云代金券