QtWindows任务栏

目录

  • 引言
  • 任务栏进度
  • 右键菜单
  • 缩略图工具栏
  • 完整代码

引言

针对Windows系统的任务栏,Qt基于系统的原生接口封装有一些非常见类,如QWinTaskbarButton、QWinTaskbarButton、QWinThumbnailToolBar等,用于利用工具栏提供更多的信息,诸如通过任务栏就能知道当前下载的进度、任务栏右键菜单会记录之前打开的文件等。

任务栏进度

A progress indicator is used to give the user an indication of the progress of an operation and to reassure them that the application is still running.
If minimum and maximum both are set to 0, the indicator shows up as a busy (indeterminate) indicator instead of a percentage of steps. This is useful when it is not possible to determine the number of steps.

例图描述
在这里插入图片描述A progress indicator at 50%.
在这里插入图片描述A paused progress indicator at 50%.
在这里插入图片描述A stopped progress indicator at 50%.
在这里插入图片描述An indeterminate progress indicator.

如上所示,QWinTaskbarProgress能够表示不同的状态,如当前进度、暂停、停止等。当然这个依赖于当前的系统版本,不同版本的进度状态表现是不一样的,诸如Windows11就将进度条从背景改为置底,如下图中最右侧的图标:
在这里插入图片描述

示例代码:

void MainWindow::onStarted()
{if(!taskbar_button_){taskbar_button_ = new QWinTaskbarButton(this);taskbar_button_->setOverlayIcon(QIcon(":/image/rocket.png"));taskbar_button_->setWindow(windowHandle());taskbar_progress_ = taskbar_button_->progress();taskbar_progress_->setRange(0, 100);taskbar_progress_->show();}timer_->start();
}
void MainWindow::onTimeout()
{if(!taskbar_progress_) {return;}taskbar_progress_->setValue((taskbar_progress_->value() + 15) % 100);
}

如上所示,首先需要构造QWinTaskbarButton,可以通过函数setOverlayIcon为其设置图标,此处设置火箭的图标,可以增加额外的提示和趣味性。再者就是设置其显示在哪个窗体上,需要通过setWindow设置原生窗口的指针。最后就是从QWinTaskbarButton取出QWinTaskbarProgress,通过setValue设置当前进度即可。

需要注意的是,windowHandle()需要在窗体第一次show()之后,才能获得到正确的原生窗口指针,Qt的窗体在构造时并未构造原生窗体,只有在show()之后才会真正去创建,因此一般是在需要使用才会创建QWinTaskbarButton并赋值,也可以在showEvent中,而不是在QMainWindow的构造函数内完成。

右键菜单

在这里插入图片描述

任务栏的右键菜单在IDE中很常用,用来记录之前打开的文件列表,Qt中通过QWinJumpList实现,代码如下:

void MainWindow::onStarted()
{if(!taskbar_button_){taskbar_button_ = new QWinTaskbarButton(this);taskbar_button_->setOverlayIcon(QIcon(":/image/rocket.png"));taskbar_button_->setWindow(windowHandle());taskbar_progress_ = taskbar_button_->progress();taskbar_progress_->setRange(0, 100);taskbar_progress_->show();}timer_->start();
}
void MainWindow::onTimeout()
{if(!taskbar_progress_) {return;}taskbar_progress_->setValue((taskbar_progress_->value() + 15) % 100);
}

QWinJumpList 中有已经创建好的分类QWinJumpListCategory ,如tasks、recent,可以添加对应的item或是link,实现一些快捷功能。tasks默认是隐藏的需要打开,添加在recent中的记录会有缓存,如果不希望保留可以在添加前调用clear()。

缩略图工具栏

在这里插入图片描述

当鼠标悬浮在任务栏上会有缩略图弹窗,在其下方是可以额外增加工具条的,如上所示。同样的Qt封装边界类QWinThumbnailToolBar可以轻松完成,构造toolBar及所需要的toolButton,再将按钮添加至工具栏即可,代码如下:

void MainWindow::onStarted()
{if(!taskbar_button_){taskbar_button_ = new QWinTaskbarButton(this);taskbar_button_->setOverlayIcon(QIcon(":/image/rocket.png"));taskbar_button_->setWindow(windowHandle());taskbar_progress_ = taskbar_button_->progress();taskbar_progress_->setRange(0, 100);taskbar_progress_->show();}timer_->start();
}
void MainWindow::onTimeout()
{if(!taskbar_progress_) {return;}taskbar_progress_->setValue((taskbar_progress_->value() + 15) % 100);
}

比较特殊的属性dismissOnClick,点击后是否关闭缩略图浮窗,默认为false。

完整代码

代码下载链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/319879.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C 认识指针

目录 一、取地址操作符(&) 二、解引用操作符(*) 三、指针变量 1、 指针变量的大小 2、 指针变量类型的意义 2.1 指针的解引用 2.2 指针 - 整数 2.3 调试解决疑惑 认识指针,指针比较害羞内敛,我们…

使用jdbc方式操作ClickHouse

1、创建测试表,和插入测试数据 create table t_order01(id UInt32,sku_id String,total_amount Decimal(16,2),create_time Datetime ) engine MergeTreepartition by toYYYYMMDD(create_time)primary key (id)order by (id,sku_id);insert into t_order01 values …

ctfshow 框架复现

文章目录 web 466web 467web 468web469web 470web 471web 472web 473web 474web 475web 476 web 466 Laravel5.4版本 &#xff0c;提交数据需要base64编码 代码审计学习—Laravel5.4 - 先知社区 (aliyun.com) 用第二条链子 反序列化格式 /admin/序列化串base64<?php na…

Flutter笔记:Widgets Easier组件库(11)- 使用提示吐丝

Flutter笔记 Widgets Easier组件库&#xff08;11&#xff09;使用提示吐丝 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this …

【Java】基本程序设计结构(二)

前言&#xff1a;上一篇我们详细介绍了Java基本程序设计结构中前半部分&#xff0c;一个简单的Java应用&#xff0c;注释&#xff0c;数据类型&#xff0c;变量与常量&#xff0c;运算符&#xff0c;字符串。包括本篇将延续上篇内容介绍后续内容&#xff0c;包括输入输出&#…

「 网络安全常用术语解读 」通用配置枚举CCE详解

1. 背景介绍 NIST提供了安全内容自动化协议&#xff08;Security Content Automation Protocol&#xff0c;SCAP&#xff09;为漏洞描述和评估提供一种通用语言。SCAP组件包括&#xff1a; 通用漏洞披露(Common Vulnerabilities and Exposures, CVE)&#xff1a;提供一个描述…

2024年 Java 面试八股文——SpringCloud篇

目录 1.Spring Cloud Alibaba 中的 Nacos 是如何进行服务注册和发现的&#xff1f; 2.Spring Cloud Alibaba Sentinel 的流量控制规则有哪些&#xff1f; 3.Spring Cloud Alibaba 中如何实现分布式配置管理&#xff1f; 4.Spring Cloud Alibaba RocketMQ 的主要特点有哪些&…

2024“天一永安杯“宁波第七届网络安全大赛极安云科战队部分WP

“天一永安杯”2024 宁波第七届网络安全大赛暨第九届大学生网络技术与信息安全大赛 大赛竞赛形式 一、线上初赛 参赛人员&#xff1a;各单位自行选拔3人&#xff08;设队长1名&#xff09;组成团队&#xff0c;不足3人不允许参赛。 竞赛时间&#xff1a;8&#xff1a;30-12&…

ES集群数据备份与迁移

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、文章涉及概念讲解二、操作步骤1.创建 snapshot repository操作主机hadoop1分别操作从机hadoop2和hadoop3 2. 查看仓库信息3. 备份索引&#xff0c;生成快照…

【精品毕设推荐】基于JSP物流信息网的设计与实现

点击免费下载原文及代码、PPT 摘要 本文讲述了基于JSP物流信息网的设计与实现。该系统使用java语言开发&#xff0c;使系统具有更好的平台性和可扩展性。 该系统实现了用户登录、注册、查询快递信息、快递公司注册成为合作伙伴以及系统管理员对信息进行管理等功能。系统的主…

Android 音视频基础知识

本系列文章会介绍两个 Android NDK Demo&#xff0c;拉流端会实现一个基于 FFmpeg 的视频播放器 Demo&#xff0c;推流端会实现一个视频直播 Demo&#xff0c;当然在做 Demo 之前会介绍音视频的基础知识。以下是本系列文章的目录&#xff1a; Android 音视频基础知识 Android 音…

第二代增强-创建采购申请时的增强

文章目录 第二代增强-创建采购申请时的增强业务要求实现过程创建项目编写代码激活增强 维护消息类运行效果断点关键点另一种形式的错误提示-出口函数EXIT_SAPLMEREQ_005运行结果 第二代增强-创建采购申请时的增强 业务要求 实现过程 创建项目 编写代码 "AFNAM&#xff0c…

STM32 PWM波定时溢出中断

打开定时器和中断 主函数初始化开启PWM和中断 HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, Pwm_data); HAL_TIM_Base_Start_IT(&htim2); 回调函数中判断是否为tim2 void HAL_TIM_PeriodElapsedCallback(TIM_Han…

prometheus+grafana的安装与部署及优点

一、Prometheus 的优点 1、非常少的外部依赖&#xff0c;安装使用超简单&#xff1b; 2、已经有非常多的系统集成 例如&#xff1a;docker HAProxy Nginx JMX等等&#xff1b; 3、服务自动化发现&#xff1b; 4、直接集成到代码&#xff1b; 5、设计思想是按照分布式、微服…

【区块链】比特币架构

比特币架构 2009年1月&#xff0c;在比特币系统论文发表两个月之后&#xff0c;比特币系统正式运行并开放了源码&#xff0c;标志着比特币网络的正式诞生。通过其构建的一个公开透明、去中心化、防篡改的账本系统&#xff0c;比特币开展了一场规模空前的加密数字货币体验。在区…

Linux学习之Tcp与Udp

目录 UDP Udp协议的格式 UDP的传输特性 UDP的缓冲区 基于UDP的应用层协议 TCP协议 TCP的报文格式 1.ACK确认应答机制 2.超时重传 3.TCP的链接管理机制 为什么要三次握手呢&#xff1f; 理解TIME_WAIT状态 流量控制&#xff08;可靠性效率&#xff09; 滑动窗口 拥塞…

深度学习中的注意力机制二(Pytorch 16)

一 Bahdanau 注意力 通过设计一个 基于两个循环神经网络的编码器‐解码器架构&#xff0c;用于序列到序列学习。具体来说&#xff0c;循环神经网络编码器将长度可变的序列转换为固定形状的上下文变量&#xff0c;然后循环神经网络 解码器根据生成的词元和上下文变量按词元生成…

【iOS】KVO

文章目录 前言一、KVO使用1.基本使用2.context使用3.移除KVO通知的必要性4.KVO观察可变数组 二、代码调试探索1.KVO对属性观察2.中间类3.中间类的方法3.dealloc中移除观察者后&#xff0c;isa指向是谁&#xff0c;以及中间类是否会销毁&#xff1f;总结 三、KVO本质GNUStep窥探…

IDEA基于Maven构建项目

IDEA基于Maven构建项目 一、Maven简介 Apache Maven 是一个软件项目管理和理解工具。基于项目对象模型的概念&#xff08;POM&#xff09;&#xff0c;Maven 可以从中心信息中管理项目的构建、报告和文档。 Apache Maven 可以用于构建和管理任何基于 Java 的项目。 下载地址…

EPAI手绘建模APP颜色、贴图、材质、样式

⑦ 颜色选择页面 1) 颜色环选色。 图 65 颜色选择器-颜色环 2) RGB选色。 图 66 颜色选择器-RGB 3) HSL选色。 图 67 颜色选择器-HSL 4) 国风颜色库选色。 图 68 颜色选择器-国风 5) CSS颜色库选色。 图 69 颜色选择器-CSS 6) 历史颜色&#xff1a;保存最近使用的多个颜色&…