如何在 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 编写进度条以在任务栏上进行自我更新?

Java 中的 Windows 7 任务栏进度条

win7下怎样关闭任务栏中的进度条,但不关掉窗口预览

Windows 7 任务栏:捕获缩略图

Tkinter,Windows:如何在没有标题栏的 Windows 任务栏中查看窗口?

更改固定的任务栏图标(Windows 7)