2010-12-03 119 views
16

有沒有辦法使用Qt訪問Windows 7進度條?我目前在Qt Creator中使用Qt 4.7.0。如何在Windows 7任務欄中顯示進度(使用Qt)?

我已經找到了Q7Goodies,但不幸的是它不是免費的。所以它似乎是可能的 - 我怎樣才能手動訪問進度條(沒有Visual Studio)?

+5

ITaskbarList3 :: SetProgressValue()。 – 2010-12-03 20:28:07

回答

10

我認爲他們使用Win7 API函數並將它們封裝在它們的庫中。您可以手動添加這些標題並使用它們。在這裏你可以找到一個幫助主題和演示項目:codeproject.com/KB/vista/SevenGoodiesTaskbarStatus.aspx

但它只適用於win7。不是跨平臺。祝你好運

更新2014年3月5日

這個問題被問了很久以前,因爲很多事情都改變了。對於那些今天(2014年初)自問相同的問題,那麼我個人的回答是,Qt 5完全支持任務欄中的進度以及不同類型的美麗附加功能。有關詳細信息,請參見QWinTaskbarProgressupd nov 28,2016

+1

非常感謝。我還沒有想出如何做到這一點,特別是對於QtCreater而言似乎很難。也許有人能夠使用該帖子:http://www.qtcentre.org/threads/26974-Qt-and-windows-7-new-Api?p=128880#post128880。我想我必須使用Visual Studio來嘗試它... – Nedec 2010-12-08 06:54:46

0

您可以使用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 
相關問題