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