我使用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));