2014-07-19 67 views
10

我正在使用windows7和Qt5.3.0 我將下面添加到我的MainWindow的構造函數,但沒有任何顯示在我的任務欄上。我錯過了什麼?QWinTaskbarProgress不會顯示

QWinTaskbarProgress * pTaskbarProgress = new QWinTaskbarProgress(this); 
pTaskbarProgress->setMinimum(0); 
pTaskbarProgress->setMaximum(100); 
pTaskbarProgress->setValue(50); 
pTaskbarProgress->show(); 
+0

你解決這個問題? – lpapp

回答

7

example in the documentation

QWinTaskbarButton *button = new QWinTaskbarButton(widget); 
button->setWindow(widget->windowHandle()); 
button->setOverlayIcon(QIcon(":/loading.png")); 

QWinTaskbarProgress *progress = button->progress(); 
progress->setVisible(true); 
progress->setValue(50); 

我看來,像你必須設置這個作爲QWinTaskbarButton的一部分。

+1

這確實應該包含在[文檔](http://doc.qt.io/qt-5/qwintaskbarprogress.html)中。 –

3

這個班的背後的歷史是它是QWinTaskbarButton的一部分,因此它與該班內在緊密地聯繫在一起。你可以看到相關的上游提交始於重構,從而解耦:

Refactor QWinTaskbarProgress out of QWinTaskbarButton

你是正確的,它不是QWinTaskbarProgress'文檔中過於露骨,所以這可能上游可能改善,但QWinTaskbarButton example作爲還有Music Player example顯示了一點,即必須更換這行:

QWinTaskbarProgress * pTaskbarProgress = new QWinTaskbarProgress(this); 

有:

QWinTaskbarButton * pTaskbarButton = new QWinTaskbarButton(this); 
pTaskbarButton->setWindow(windowHandle()); 
QWinTaskbarProgress * pTaskbarProgress = pTaskbarButton->progress(); 

您可能希望與任何自定義圖片或喜歡什麼音樂播放器的例子一些設置覆蓋圖標以及任務欄按鈕的功能:

pTaskbarButton->setOverlayIcon(style()->standardIcon(QStyle::SP_MediaPlay)); 
7

事實上,它看起來像調用

button->setWindow(widget->windowHandle()); 
在QMainWindow構造函數中,

不起作用,即使在調用setVisible(true)show()後,QWinTaskbarProgress也不會顯示。

如果QMainWindow中構造它一旦窗口中顯示像被稱爲創建:

void MainWindow::showEvent(QShowEvent *e) 
{ 
#ifdef Q_OS_WIN32 
    m_button->setWindow(windowHandle()); 
#endif 

    e->accept(); 
} 
+0

不錯!這爲我做了詭計。 – Inverse