如何在 Windows 7 任务栏中显示进度(使用 Qt)?
Posted
技术标签:
【中文标题】如何在 Windows 7 任务栏中显示进度(使用 Qt)?【英文标题】:How to show progress in windows 7 taskbar (using Qt)? 【发布时间】:2011-05-19 23:14:28 【问题描述】:有没有办法使用 Qt 访问 windows 7 进度条?我目前正在使用 Qt 4.7.0 和 Qt Creator。
我已经找到Q7Goodies,但不幸的是它不是免费的。所以这似乎是可能的 - 我怎样才能手动访问进度条(没有 Visual Studio)?
【问题讨论】:
ITaskbarList3::SetProgressValue(). 另见KDE Taskbar Progress,其中one of the answers 指向repository,其代码支持KDE 和Windows 任务栏进度指示器。 (我实际上在两个系统上都检查过了,可以确认它可以工作。) 【参考方案1】:我认为他们使用了 Win7 API 函数并将它们封装在他们的库中。您可以手动包含这些标题并使用它们。在这里您可以找到帮助主题和演示项目:codeproject.com/KB/vista/SevenGoodiesTaskbarStatus.aspx
但它只适用于win7。不是跨平台的。祝你好运
2014 年 3 月 5 日更新
这个问题是很久以前提出的,此后许多事情都发生了变化。对于那些今天(2014 年初)问自己同样问题的人,我个人的回答是 Qt 5 完全支持任务栏的进度和不同类型的漂亮附加功能。详情请参阅QWinTaskbarProgress(2016 年 11 月 28 日更新)
【讨论】:
非常感谢。我还没有弄清楚如何做到这一点,尤其是使用 QtCreater 似乎很难。也许有人能够利用那个帖子:qtcentre.org/threads/…。我想我必须使用 Visual Studio 来尝试...【参考方案2】:您可以使用QWinTaskbarProgress
类。要使用这个类,你需要在你的 .pro 文件中添加win32:QT += winextras
。
这是一个示例代码,展示了如何在 Windows 任务栏 (inspired from this example) 中显示 QProgressBar
的值:
#ifdef _WIN32 //The _WIN32 macro is automatically generated when compiling for Windows
#include <QWinTaskbarProgress>
#include <QWinTaskbarButton>
#endif
QProgressBar *progressBar = new QProgressBar;
progressBar->show();
#ifdef _WIN32
QWinTaskbarButton *windowsTaskbarButton = new QWinTaskbarButton; //Create the taskbar button which will show the progress
windowsTaskbarButton->setWindow(progressBar->windowHandle()); //Associate the taskbar button to the progress bar, assuming that the progress bar is its own window
QWinTaskbarProgress *windowsTaskbarProgress = windowsTaskbarButton->progress();
windowsTaskbarProgress->show();
QObject::connect(loadingWindow, &QProgressBar::valueChanged, [windowsTaskbarProgress](int value)
windowsTaskbarProgress->setValue(value); //Change the value of the progress in the taskbar when the value of the progress bar changes
);
#endif
【讨论】:
以上是关于如何在 Windows 7 任务栏中显示进度(使用 Qt)?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Windows 7 编写进度条以在任务栏上进行自我更新?