QWinTaskbarProgress将不会显示

我使用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构造函数不起作用,即使在调用setVisible(true)show()之后,QWinTaskbarProgress也不会显示。

如果在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(); 

您可能希望为任务栏按钮设置覆盖图标,并使用自定义图像或类似于音乐播放器示例所做的操作:

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