c++ - QWinTaskbarProgress 我做错了什么?

标签 c++ qt qtwinextras

我按照我发现的示例使用 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/

相关文章:

c++ - Qt Creator,项目套件中的编译器被忽略

c++ - 如何为 mac el capitan 安装 qt4?

c++ - QWinTaskbarProgress 不会显示

c++ - 打开 Unix,Arduino Uno 的 Linux 系统调用权限被拒绝

windows - Windows下纯Qt应用使用KDE风格

c++ - 如何在跨平台应用中使用QtWinExtras

python - 如何从 Python 获取 OpenCV 图像并在 pybind11 中的 C++ 中使用它?

c++ - 从第二个父亲访问 'this'指针作为第一个父亲的指针是否安全?

c++ - C++ 中的宏会提高性能吗?