如何在Windows 7任务栏中显示进度(使用Qt)?

时间:2010-12-03 20:17:14

标签: c++ qt windows-7

有没有办法用Qt访问Windows 7进度条?我目前正在使用Qt 4.7.0和Qt Creator。

我已经找到Q7Goodies,但不幸的是它不是免费的。所以似乎有可能 - 如何手动访问进度条(没有Visual Studio)?

2 个答案:

答案 0 :(得分:11)

我认为他们使用了Win7 API函数并将它们封装在它们的库中。您可以手动包含这些标题并使用它们。在这里,您可以找到帮助主题和演示项目:codeproject.com/KB/vista/SevenGoodiesTaskbarStatus.aspx

但它仅适用于win7。不跨平台。祝你好运

2014年3月5日更新

很久以前就提出过这个问题,很多事情都发生了变化。对于那些今天(2014年初)问自己同样问题的人,我个人的回答是Qt 5完全支持任务栏的进展和不同类型的美丽演员。有关详情,请参阅QWinTaskbarProgress更新时间2016年11月28日

答案 1 :(得分:1)

您可以使用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