QtWindows任务栏

2024-05-06 09:52
文章标签 任务栏 qtwindows

本文主要是介绍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。

完整代码

代码下载链接

这篇关于QtWindows任务栏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/964055

相关文章

CAD 多个页面在一个任务栏图标设置

命令行输入快捷键op或: 下图打对号,确定即可。

任务栏透明怎么设置?适配最新版 Windows 电脑的方法介绍(图文教程)

电脑任务栏作为Windows操作系统中的一个重要组件,部分用户对于任务栏的了解比较少,经常会遇到任务栏消失、任务栏透明度不会设置的问题。本文一一给大家科普关于Windows任务栏的知识,以及设置任务栏透明的技巧。 一、什么是任务栏 电脑任务栏指的是屏幕下的小长条,由左到右分别包括了:开始、搜索、应用程序区、托盘区、音量、网络设置、输入法、日历等内容组成 主要作用: 1、启动和切换应用程

Win11任务栏怎么变成透明?电脑任务栏透明设置攻略!

Windows 11作为微软最新的操作系统,为用户带来了许多新的功能和改进,包括任务栏的个性化设置。许多用户希望将任务栏设置为透明,以增加桌面的美观性和整洁度。本文将详细介绍几种将Win11任务栏变为透明的方法,帮助用户实现个性化的设置。 方法一:使用系统内置功能 Windows 11自带了调整任务栏透明度的功能,用户可以通过简单的设置来实现。 步骤1:打开设置 首先,按下Win+I键

windows/mfc实现窗口隐藏同时 在任务栏上无图标显示功能

当实现窗体隐藏时,同时让任务栏隐藏大多直接改变样式就行 只需要执行 ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW); 但是 在实际效果中,该方法不是很理想 1、隐藏的程序无法接受WM_SIZE通知消息 2、由于我使用了去边框属性,以及隐藏显示切换,导致该功能失效 后来经过网上查找 发现了一个 直接通过从任务栏删除 图标的方法 BOO

【已解决】Win11任务栏怎么使用小图标_Win11任务栏调整图标大小方法

使用注册表编辑器 1、打开运行,并输入 regedit 命令,确定或回车,可以打开注册表编辑器。 2、注册表编辑器窗口,依次展开到以下路径: HKEY_CURRENT_USER-Software-Microsoft -Windows-CurrentVersion-Explorer-Advanced 然后新建名称为 TaskbarSi 的DWORD值。 3、编辑 Taskb

银河麒麟桌面操作系统V10:如何快速将应用固定到任务栏?

银河麒麟桌面操作系统V10:如何快速将应用固定到任务栏? 1、图形界面方法2、命令行方法2.1 固定应用2.2 取消固定 💖The Begin💖点点关注,收藏不迷路💖 在银河麒麟V10中,/usr/share/applications/目录存放了所有已安装应用程序的快捷方式(.desktop文件)。这些文件定义了应用如何显示和启动。 例如,python3.8

Windows10任务栏卡顿解决方案

一、重新启动任务资源管理器 右键底部任务栏选择“任务管理器”;按快捷键“Ctrl+Shift+Esc”;搜索框搜索“任务管理器”并单击“打开”;“Win+X”打开开始菜单附属菜单,在列表中选择“任务管理器” ;按下“ctrl+alt+delete”键,选择打开“任务管理器”; 二、关闭任务栏不需要的显示 右击点击任务栏设置,关闭不需要的显示,例如新闻资讯等。 三、重新部署操

分享:一个可爱的运行猫动画在你的窗口任务栏上

RunCat_for_windows:在 Windows 任务栏飞奔的“小猫”。这是一个用 C# 写的小工具,它会在 Windows 任务栏显示一只奔跑的小猫动画,CPU 使用率越高它跑得越快。 安装很简单 访问“发布”页面并下载 RunCat.exe。 或通过 Scoop(x64 版本)安装:scoop bucket add extras、scoop install runcat

FanySkill源文件修改,快捷键以及新增任务栏选项

FanySkill源文件修改,快捷键以及新增任务栏选项 一、文件下载二、快捷键设置三、任务栏四、本人配置 一、文件下载 自行去PCB联盟网下载,因为那边下载要联盟币,我不清楚我免费提供会不会给我带来没必要的损失,敬请谅解。 要下载的东西有:FanySkill和Notepad++ 安装教程也可下载,这里不进行阐述 二、快捷键设置 在第一部的方法二中可以知道下面这个文件

IIS7 Manager在任务栏中不能正常打开

IIS7 manager不能正常打开 我的机器上IIS7不知曾几何时竟然打不开了,重装了两次依旧不行,我的操作系统是WIN7企业版。问题的症状是在管理工具中双击IIS信息服务管理器后,在任务栏上会显示,但是不会显示出界面,在浏览器中敲入http://localhost/,可以正常显示有多种语言显示welcome的IIS7的欢迎界面,非常奇怪。在baidu上找到了一些同病相怜的问题,但都没有解