我按照我发现的示例使用 QWinTaskbarProgress
。我在 Qt Creator
(Qt 5.3.1) 中创建了一个标准的 Qt Widgets Application
,我的 mainwindow.cpp
如下所示:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_taskbarButton = new QWinTaskbarButton(this);
m_taskbarButton->setWindow(windowHandle());
m_taskbarButton->setOverlayIcon(style()->standardIcon(QStyle::SP_MediaPlay));
m_taskbarProgress = m_taskbarButton->progress();
m_taskbarProgress->setVisible(true);
m_taskbarProgress->setRange(0, 100);
m_taskbarProgress->setValue(50);
}
MainWindow::~MainWindow()
{
delete ui;
}
本以为启动应用后任务栏图标会叠加显示50%
进度条,结果任务栏看起来很正常,就像没写代码一样。我做错了什么?
最佳答案
事实上,它看起来像是在调用“m_taskbarButton->setWindow(windowHandle());”在 QMainWindow 构造函数中不起作用,即使在调用 setVisible(true) 或 show() 之后,QWinTaskbarProgress 也根本不会显示。
必须在窗口显示后调用它,如下所示:
void MainWindow::showEvent(QShowEvent *e)
{
#ifdef Q_OS_WIN32
m_taskbarButton->setWindow(windowHandle());
#endif
e->accept();
}
关于c++ - QWinTaskbarProgress 我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25916966/