QWinTaskbarProgress не будет отображаться

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

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

10

Решение

Увидеть пример в документации:

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.

7

Другие решения

На самом деле, это похоже на вызов

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();
}
9

История этого класса состоит в том, что он был частью 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));
3
По вопросам рекламы [email protected]