Qt实战案例(41)——利用QWinTaskbarButton和QWinTaskbarProgress类实现任务栏进度条的显示
目录
- 一、项目介绍
- 二、项目基本配置
- 三、UI界面设置
- 四、主程序实现
- 4.1 pro文件
- 4.2 widget.h头文件
- 4.3 widget.cpp源文件
- 五、效果演示
一、项目介绍
任务栏进度条是Windows7就引入的一种UI形式,通常用于显示软件当前正在执行的任务的进度(如编译程序的进度、下载任务的进度)。如下:
本文主要介绍利用QWinTaskbarButton和QWinTaskbarProgress类实现任务栏进度条的显示。
二、项目基本配置
新建一个Qt案例,项目名称为“TaskbarTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建。
三、UI界面设置
UI界面如下,只有一个按钮PushButton:
四、主程序实现
4.1 pro文件
pro文件中需要增加一个库:
QT += winextras
Qt框架针对Windows提供了一个单独的模块WinExtras。这个模块中提供了一些类库和函数,用于实现Windows上特有的功能,如类型转换、句柄操作、窗口属性设置等。当然也包括了此次我们要说的任务栏进度条,QWinTaskbarButton和QWinTaskbarProgress类。
4.2 widget.h头文件
声明计时器、任务栏按钮和进度指示器:
public:QTimer *timer;QWinTaskbarButton *windowsTaskbarButton;QWinTaskbarProgress *windowsTaskbarProgress;
声明定时器槽函数和按钮点击槽函数:
private slots:void onTimeout();void onButtonClicked();
4.3 widget.cpp源文件
在构造函数中编写代码如下:
timer = new QTimer;timer->setInterval(10);//设置时间间隔为100mstimer->setSingleShot(false);//设置不是单次触发器windowsTaskbarButton = new QWinTaskbarButton(this); //创建显示进度的任务栏按钮connect(timer, &QTimer::timeout, this, &Widget::onTimeout);//连接定时器信号和对应的槽函数connect(ui->pbn_start, &QPushButton::clicked, this, &Widget::onButtonClicked);//连接按钮点击信号和对应的槽函数
定义计时器对应的槽函数:
void Widget::onTimeout() {qDebug()<<windowsTaskbarProgress->value()+1;windowsTaskbarProgress->setValue(windowsTaskbarProgress->value() + 1);//设置TaskbarProgress的当前值windowsTaskbarProgress->show(); //显示TaskbarProgress//当达到最大值时则计时器停止且重置进度指示器if(windowsTaskbarProgress->value()==100){timer->stop();//计时器停止windowsTaskbarProgress->reset();//重置进度指示器}
}
定义按钮点击槽函数:
void Widget::onButtonClicked() {windowsTaskbarButton->setWindow(windowHandle()); //将任务栏按钮与进度条关联,假设进度条是它自己的窗口windowsTaskbarProgress = windowsTaskbarButton->progress();//设置进度指示器windowsTaskbarProgress->setRange(0, 100); //设置最小值和最大值的值timer->start(); //定时器启动
}
五、效果演示
完整效果如下:
【注意】: 这里有个坑,windowHandle()调用要在窗口显示出来之后才能返回正确的窗口句柄,否则返回的null,导致任务栏进度条无法正常显示。
如果没有看懂的话,完整代码可以参考:https://download.csdn.net/download/didi_ya/84404358
ok,以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~
参考链接:https://forum.qt.io/topic/70672/windowhandle-will-return-null
Qt实战案例(41)——利用QWinTaskbarButton和QWinTaskbarProgress类实现任务栏进度条的显示相关推荐
- Qt创建任务栏进度条
一.正文 任务栏进度条是Windows7就引入的一种UI形式,通常用于显示软件当前正在执行的任务的进度(如编译程序的进度.下载任务的进度).如下: 在Qt中使用任务栏进度条也是非常容易的一件事情.Qt ...
- Visual C++利用互斥量同步线程实现文件读取进度条
忘了原文的位置了. 一.前言 文件读取进度条的实现可以有很多种方法,常用的是在读取文件的过程中隔一定时间向对话框发送消息以控制进度条的位置,但是这种方法很难确定隔多少时问发送一个消息,因为文件的大小是 ...
- [MAUI 项目实战] 手势控制音乐播放器(四):圆形进度条
文章目录 关于图形绘制 创建自定义控件 使用控件 创建专辑封面 项目地址 我们将绘制一个圆形的音乐播放控件,它包含一个圆形的进度条.专辑页面和播放按钮. 关于图形绘制 使用MAUI的绘制功能,需要Mi ...
- Qt实战案例(28)——利用QSQL相关类实现对MySQL数据库的基本操作及相关设置详解
目录 一.项目介绍 二.项目基本配置 2.1 安装MySQL 2.2 创建Qt项目 2.3 移动libmysql.dll文件 三.UI界面设计 四.主程序实现 4.1 pro文件 4.2 main.c ...
- Qt实战案例(42)——利用Qt实现自定义标题栏功能(自定义最大化、最小化、关闭等功能)
目录 一.项目介绍(为什么要自自定义标题栏功能) 二.项目基本配置 三.UI界面设计 四.主程序实现 4.1 隐藏边框 4.2 设置最大化(还原),最小化,关闭按钮的样式风格 4.3 关闭按钮的实现 ...
- Qt实战案例(29)——利用数据库、TableView等相关知识展示汽车制造商与汽车关系(综合案例)
目录 一.项目介绍 二.项目基本配置 三.UI界面设计 四.连接数据库模块 五.添加记录功能 六.完整代码 七.效果演示 一.项目介绍 结合SQL数据库.XML以及TableView相关知识,展示汽车 ...
- Qt实战案例(9)——利用QLineEdit设置输入掩码来限制输入内容
目录 一.输入掩码介绍 二.代码示例 2.1 input Mask介绍 2.2 input Mask示例 2.3 输入与输出 三.拓展--输入约束 一.输入掩码介绍 QLineEdit提供了输入掩码( ...
- Qt实战案例(2)——电子时钟的设计
目录 一.项目介绍 二.项目基本配置 三.UI界面设计 四.主程序实现 4.1 添加新文件 4.2 digiclock.h头文件 4.3 digiclock.cpp源文件 4.4 main.cpp源文 ...
- Qt实战案例(13)(序)——以QToolButton为例介绍Qt界面外观设计
目录 一.项目介绍 二.项目基本配置 三.UI界面设计 四.主程序实现 4.1 widget.h头文件 4.2 widget.cpp源文件 4.3 main.qss 五.效果演示 一.项目介绍 以QT ...
最新文章
- Android Display System --- Surface Flinger
- 苹果7支持快充吗_支持苹果20W+华为22.5W快充,倍思发布迷你数显快充移动电源...
- 服务发现框架选型,Consul还是Zookeeper还是etcd
- jquery 插件和后台模板搜集
- yield return的理解
- java mysql连接两张表,如何使用Java和MySQL在一个语句中插入两个不同的表?
- bgi::detail::minmaxdist用法的测试程序
- CentOS 6.3下Samba服务器的安装与配置【转载】
- python中List和Tuple的区别
- windows 下 CUDA 并行编程环境搭建
- c++ 11/14新特性
- 解决Unity TextMeshPro 不能显示中文问题
- 实例——领域驱动设计DDD
- C语言 getchar()原理及易错点解析
- aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启
- 打印钻石图形python_Python pandas高效数据处理之绘图
- 桌面计算机没反应是什么意思,点击显示桌面没反应? 显示桌面没反应解决方法...
- ... ...WOW S4套装
- linux串口termios
- 知名互联网公司需要什么样的人才