Windows 10上的Qt应用缺少开始菜单和任务栏图标

6
我在Windows上的Qt应用程序中遇到了图标问题。
我已经使用"RC_FILE"设置了"IDI_ICON1 ICON DISCARDABLE",并且该图标在Windows资源管理器中正确显示。
但是我仍然缺少任务栏图标和应该出现在开始菜单中的图标。
我已经用256x256、32x32、48x48和16x16大小的文件替换了旧的32x32 .ico文件,但这也没有帮助。
有什么想法吗?
为了更清晰,请参考附加的屏幕截图:

enter image description here


我们在VS项目中添加了.ico文件和.rc源文件来设置应用程序图标(与您的问题描述类似)。我们的GUI也是基于Qt的。如果我在VS2013中启动我们的应用程序(进行调试),我会在任务栏中看到一个默认的应用程序图标(这有点让我困惑,直到我习惯了它)。然而,在发布版本中一切都很好。你那边有什么不同吗? - Scheff's Cat
我记得曾经在Windows 7甚至XP上,在构建和测试应用程序后更改/修复了一个应用程序图标。我注意到资源管理器缩略图视图中的更新相当延迟。我认为Windows / Explorer在某个地方缓存了旧图标,一段时间后这种烦人的效果消失了。(因此,我没有深入挖掘……) - Scheff's Cat
@Scheff:我们不使用VS,而是使用mingw64在Linux上进行交叉编译。我曾经担心过VS可能使用一些文档不完善的“魔法”来使图标起作用。正如我所提到的,资源管理器很好用,但在应用程序运行时进入任务栏的东西却不行。 - Hurzelchen
很多年前,我曾手动制作过一个.rc文件,可能是从任何地方阅读的文档。自那以后,我通过复制/粘贴来制作它们,因为这样做是有效的。因此,我无法告诉你这些东西为什么存在。然而,我的.rc文件包含两个图标条目:IDI_ICON1 ICON DISCARDABLE "myApp.ico"IDI_APPICON ICON "myApp.ico"。我刚刚在谷歌上搜索了IDI_APPICON,但我找到的只有一些命中中的#define IDI_APPICON 101。我甚至不知道我这边的IDI是从哪里来的。WinAPI?我们的源代码中没有这样的定义。 - Scheff's Cat
是的,整个桌面和任务栏都是 explorer.exe 的一部分。但似乎资源管理器的文件浏览器和任务栏从不同的源获取图标。 - Hurzelchen
显示剩余4条评论
1个回答

2

你没有标注你所使用的Qt版本,因此我将对qt4和qt5进行评论。

任务栏图标

在两个版本中,Windows任务栏图标都是从您的Dialog/MainWindow/Widget的图标派生而来的(请参见https://dev59.com/AV4b5IYBdhLWcg3wWwPP#29285256)。 您可以使用QWidget::setWindowIcon()为特定窗口及其子窗口设置此图标。

这应该可以解决您的问题,但出于完整性的考虑,我也会讨论资源管理器图标。

资源管理器/开始菜单图标

Explorer.exe和开始菜单图标都来自于*.rc文件,该文件由您或qmake生成。您可以使用自己的*.rc文件,并像您的问题评论中描述的那样设置Qt4或Qt5中的RC_FILE。我相信您已经尝试过了,但是有时这会与其他qmake调用冲突,例如创建第二个*.rc文件的VERSION
不幸的是,在Qt4中,您无法做到这一点。您必须在*.rc文件中自己完成所有工作,或者放弃一些功能,例如VERSION。
然而,Qt5添加了一个新选项RC_ICON,可以与其他与RC相关的qmake变量良好地协作。只要您对qmake生成*.rc文件没有问题,那就可以解决问题。
在这里设置的应用程序图标集应该级联到任务栏和标题栏中的窗口图标,但根据我的经验,似乎并没有发生,将它们分别设置更有意义。分辨率也不同,因此可以更好地控制。

请参见此链接以获取官方Qt5文档:http://doc.qt.io/qt-5/appicon.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接