Qt扫盲-Windows任务栏使用总结
- 一、概述
- 二、覆盖图标和进度指示器
- 三、跳转列表
- 四、缩略图工具栏
一、概述
任务栏为用户提供了访问桌面上打开的应用程序的权限。Windows自动在任务栏上创建用于访问应用程序窗口的按钮。
从 Windows 7到Windows10 都有效果。就是在任务栏上的一个优化功能。
二、覆盖图标和进度指示器
你可以使用QWinTaskbarButton类来设置一个覆盖图标,使用QWinTaskbarProgress类在任务栏按钮上显示进度指示器。覆盖图标表示应用程序状态的更改。进度指示器显示耗时任务的进度。像这种在赋值大文件的时候,可以显示这个进度的。
任务栏的例子
下面的示例代码演示了如何使用QWinTaskbarButton和QWinTaskbarProgress类来调整任务栏按钮的外观:
QWinTaskbarButton *button = new QWinTaskbarButton(widget);
button->setWindow(widget->windowHandle());
button->setOverlayIcon(QIcon(":/loading.png"));
QWinTaskbarProgress *progress = button->progress();
progress->setVisible(true);
progress->setValue(50);
三、跳转列表
应用程序可以使用跳转列表为用户提供更快的文件访问或显示任务或命令的快捷方式。这个就是鼠标右键单击激活
- Destinations:应用程序可以处理的文件和url的分类快捷方式,甚至链接到其他应用程序。除了应用程序可以自己创建的类别之外,Windows还提供了两个可以添加到自定义跳转列表的标准类别。
- Recent 和Frequent:当应用程序使用QFileDialog::getOpenFileName()函数时,或者当应用程序启动以从Windows shell打开文件时,Windows自动填充的所谓的已知类别。
- Tasks:即显示一些应用功能的快捷方式。应用程序可以在任务列表上显示最常用的上下文无关函数。
注意:为了能够将目的地添加到跳转列表中,应用程序应该将自己与它可以处理的文件类型关联起来。
其实在资源管理器也用了这个功能
下面的示例代码演示了如何使用QWinJumpList和QWinJumpListItem类中的类来实现跳转列表:
QWinJumpList jumplist;
QWinJumpListCategory *tasks = jumplist.tasks();
QWinJumpListItem *newProject = new QWinJumpListItem(QWinJumpListItem::Link);
newProject->setTitle(tr("Create new project"));
newProject->setFilePath(QDir::toNativeSeparators(QCoreApplication::applicationFilePath()));
newProject->setArguments(QStringList("--new-project"));
tasks->addItem(newProject);
tasks->addLink(tr("Launch SDK Manager"), QDir::toNativeSeparators(QCoreApplication::applicationDirPath()) + "\\sdk-manager.exe");
tasks->setVisible(true);
四、缩略图工具栏
应用程序可以在窗口的缩略图中嵌入工具栏,当鼠标悬停在任务栏图标上时就会显示。缩略图工具栏可以提供对窗口命令的快速访问,而不需要用户恢复或激活窗口。
缩略图工具栏示例
下面的示例代码演示了如何使用QWinThumbnailToolBar和QWinThumbnailToolButton类中的函数来实现缩略图工具栏:
QWinThumbnailToolBar *thumbbar = new QWinThumbnailToolBar(widget);
thumbbar->setWindow(widget->windowHandle());
QWinThumbnailToolButton *settings = new QWinThumbnailToolButton(thumbbar);
settings->setToolTip("Settings");
settings->setIcon(":/settings.png");
settings->setDismissOnClick(true);
connect(settings, SIGNAL(clicked()), settingsPage, SLOT(show()));
QWinThumbnailToolButton *playPause = new QWinThumbnailToolButton(thumbbar);
playPause->setToolTip("Play/Pause");
playPause->setIcon(":/play.png");
connect(playPause, SIGNAL(clicked()), mediaPlayer, SLOT(play()));
thumbbar->addButton(settings);
thumbbar->addButton(playPause);