Я использую windows7 и Qt5.3.0
Я добавил ниже в конструктор моего MainWindow, но на панели задач ничего не отображается. Я что-то пропустил?
QWinTaskbarProgress * pTaskbarProgress = new QWinTaskbarProgress(this);
pTaskbarProgress->setMinimum(0);
pTaskbarProgress->setMaximum(100);
pTaskbarProgress->setValue(50);
pTaskbarProgress->show();
Увидеть пример в документации:
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.
На самом деле, это похоже на вызов
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();
}
История этого класса состоит в том, что он был частью QWinTaskbarButton
таким образом, он был тесно связан с этим классом. Вы можете увидеть соответствующий вышестоящий коммит, который начал рефакторинг и, следовательно, развязку:
Рефакторинг QWinTaskbarProgress из QWinTaskbarButton
Вы правы, что это не слишком явно указано в документации QWinTaskbarProgress, так что это может быть потенциально улучшено, но Пример QWinTaskbarButton так же хорошо как Пример музыкального плеера показывает точку, а именно вы должны заменить эту строку:
QWinTaskbarProgress * pTaskbarProgress = new QWinTaskbarProgress(this);
с:
QWinTaskbarButton * pTaskbarButton = new QWinTaskbarButton(this);
pTaskbarButton->setWindow(windowHandle());
QWinTaskbarProgress * pTaskbarProgress = pTaskbarButton->progress();
Возможно, вы также захотите установить значок наложения для кнопки панели задач либо с пользовательским изображением, либо с чем-то вроде того, что делают примеры из Music Player:
pTaskbarButton->setOverlayIcon(style()->standardIcon(QStyle::SP_MediaPlay));