QWinTaskbarProgress не покажет

Я использую windows7 и Qt5.3.0 Я добавил ниже свой конструктор MainWindow, но на моей панели задач ничего не отображается. Я что-то пропустил?

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

Ответ 1

См. пример в документации:

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.

Ответ 2

На самом деле, кажется, звоните

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

в конструкторе QMainWindow не работает, и QWinTaskbarProgress вообще не отображается даже после вызова setVisible(true) или show().

Если он создан в конструкторе QMainWindow, он должен вызываться, как только окно отображается как:

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

    e->accept();
}

Ответ 3

История этого класса заключается в том, что он был частью QWinTaskbarButton, поэтому он был тесно связан с этим классом. Вы можете увидеть соответствующее восходящее сообщение, которое запустило рефакторинг и, следовательно, отключилось:

Рефакторинг QWinTaskbarProgress из QWinTaskbarButton

Вы правы, что он не слишком явчен в документации QWinTaskbarProgress, поэтому это может быть потенциально улучшено вверх по течению, но QWinTaskbarButton 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));