如何在应用程序启动时动态设置任务栏图标图​​像?

时间:2019-09-24 11:57:52

标签: c++ windows qt5 taskbar

我有一个带有一些默认任务栏图标的Qt C ++应用程序。在应用程序启动时,将动态加载新的任务栏图标,并将其设置为任务栏图标。

我正在设置任务栏图标,如下所示:

void MainWindow::setIcon)
{
    // some other code
    QTemporaryFile tempFile;
    QFile iconTemp(tempFile.fileName() + "TaskbarIcon");
    if(iconTemp.open(QFile::WriteOnly))
    {
        iconTemp.write(data); // data is the new image for taskbar icon in bytes
        iconTemp.close();
    }

    setWindowIcon(QIcon(iconTemp.fileName()));
    iconTemp.remove();

    // some more code
}

另外,请注意,如果发生任何错误,则默认图标设置如下:

setWindowIcon(QIcon(":/Images/my_default_icon.ico"));

现在,当我在没有任何快捷方式的情况下安装Qt应用程序并直接使用EXE启动该应用程序时,新的任务栏图标将正确显示。

但是,如果我使用快捷方式(例如,“桌面”或“开始”菜单上的快捷方式)安装Qt应用程序,然后通过EXE或通过其任何快捷方式启动该应用程序,则不会显示新的任务栏图标。而是显示默认任务栏图标。现在,如果我右键单击任务栏图标并固定/取消固定一次,新的任务栏图标将正确显示。

任何人都可以帮助解决此问题吗?

注意:动态任务栏图标不是.ICO文件,而是某些png或jpg文件。

0 个答案:

没有答案