QWinTaskbarProgress不会表现出来

时间:2014-07-19 13:28:50

标签: c++ windows qt qt5 qtwinextras

我使用的是Windows7和Qt5.3.0 我在下面添加到我的MainWindow构造函数中,但我的任务栏上没有显示任何内容。我错过了什么吗?

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

3 个答案:

答案 0 :(得分:9)

事实上,它似乎在呼唤

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

答案 1 :(得分:7)

请参阅example in the documentation

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 :(得分:3)

这个课程背后的历史是它是QWinTaskbarButton的一部分,因此它与该课程本身紧密结合。您可以看到开始重构并因此解耦的相关上游提交:

Refactor QWinTaskbarProgress out of QWinTaskbarButton

你是对的,它在QWinTaskbarProgress的文档中不太明确,所以这可能会在上游得到改善,但是QWinTaskbarButton example以及Music Player 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));