2014-07-19 18 views
10

Sto usando windows7 e Qt5.3.0 Ho aggiunto di seguito al costruttore del mio MainWindow ma nulla viene mostrato sulla mia barra delle applicazioni. Ho dimenticato qualcosa?QWinTaskbarProgress non mostrerà

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

avete risolto il problema? – lpapp

risposta

7

Vedere il 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); 

Sembra a me come si deve impostare questo come parte di un QWinTaskbarButton.

+1

Questo dovrebbe essere incluso in [la documentazione] (http://doc.qt.io/qt-5/qwintaskbarprogress.html). –

3

La storia dietro questa classe è che faceva parte di QWinTaskbarButton, quindi era intrinsecamente strettamente accoppiato con quella classe. Potete vedere il relativo monte commit che ha iniziato il refactoring e quindi disaccoppiamento:

Refactor QWinTaskbarProgress out of QWinTaskbarButton

Hai ragione che non è troppo esplicito nella documentazione QWinTaskbarProgress', quindi questo potrebbe essere potenzialmente migliorato a monte, ma il QWinTaskbarButton example come così come il Music Player example mostra il punto, vale a dire si deve sostituire questa linea:

QWinTaskbarProgress * pTaskbarProgress = new QWinTaskbarProgress(this); 

con:

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

Si potrebbe desiderare di impostare l'icona di sovrapposizione, nonché per il pulsante della barra delle applicazioni o un'immagine personalizzata o di qualcosa di simile a ciò che gli esempi lettore musicale con fa:

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

In realtà, sembra che chiamare

button->setWindow(widget->windowHandle()); 

nel costruttore QMainWindow non funziona e QWinTaskbarProgress non verrà visualizzato neanche dopo aver chiamato setVisible(true) o show().

Se creato nel costruttore QMainWindow deve essere chiamata una volta che la finestra è mostrato come in:

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

    e->accept(); 
} 
+0

Bello! Questo ha fatto il trucco per me. – Inverse

Problemi correlati