Qt Creator如何部署到Windows系统并设置图标?

3
我想使用Qt安装程序框架将应用程序部署到Windows。我在设置任务栏图标时遇到了一些问题。 我正在使用:
Qt Creator 版本 4.7.2
qmake Desktop Qt 5.11.2 MinGW 32位
如果我在Qt Creator中运行应用程序,则应用程序会显示一个任务栏图标。
要将其部署到Windows,我执行以下步骤:
1. 以发布版本构建应用程序 2. 将创建的 .exe 文件复制到安装程序框架的数据文件夹中 3. 运行以下命令将所有内容链接在一起: windeployqt.exe --no-translations --no-quick-import E:\path\to\app.exe 4. 运行以下命令创建安装程序: D:\Qt\InstallerFramework\bin\binarycreator.exe --offline-only -c config/config.xml -p packages app_Setup 之后,我得到了setupt.exe,我可以在另一台PC上成功安装它。 现在,如果我启动应用程序,应用程序的图标丢失了,我只能看到Windows的标准图标。

enter image description here

现在我所做的事情是:

我有一个.qrc文件,它有以下条目:

<RCC>
    <qresource prefix="/">
        <file>icon.ico</file>
    </qresource>
</RCC>

还需要一个包含以下内容的额外.rc文件

IDI_ICON1               ICON    DISCARDABLE     "icon.ico"

在 .pro 文件中我添加了
RC_FILE = resources.rc
RESOURCES = qresources.qrc

我使用Qt Designer将图标分配为主窗口的图标。 在MainWindow的构造函数中加入以下代码:
setWindowIcon(QIcon("://icon.ico"));

在运行windeployqt之后,我还检查了imageformats文件夹中是否有必要的dll(我指的是qico.dll)。

尽管如此,在任务栏内仍然没有图标(在开始菜单中也没有图标)。.exe具有正确的图标。

我搜索了很多,这些是每个人都建议的步骤,所以我不知道为什么它不起作用。

如果我使用windeployqt创建应用程序后启动.exe,则应用程序在任务栏内具有图标。

在使用创建的安装程序安装后,图标丢失。(qico.dll也存在于安装文件夹中)

因此,我在创建设置时错过了某些内容吗?也许你们中的一些人有想法。

谢谢!


你能确认正确的拼写(Icon.ico还是icon.ico),并使用一个/而不是//设置setWindowIcon(QIcon(":/icon.ico"))吗? - Jens
拼写错误了。已更正。谢谢... 双破折号应该也是正确的,因为在 qresource 中有前缀。 - Sorkfa
资源确实已编译进去了吗?为此,rc.exe需要位于mingw编译器所在的二进制文件夹中。有一些Qt设置缺少rc.exe。如果您将exe文件作为文件在Visual Studio中打开(在那里打开应该会显示完整的资源信息),您能看到图像吗? - Jens
我今天稍后会检查。奇怪的是:如果我打开使用windeployqt创建的独立应用程序,则图标会显示在任务栏中。但是,在使用qt安装程序框架创建设置并安装后,它就消失了。 - Sorkfa
@Jens 我对比了两个 .exe 文件(一个来自安装程序,另一个是运行 windeployqt 后生成的),它们完全相同。此外,我再次检查了所有的 dll 文件,两个文件夹中的 dll 也是相同的。 - Sorkfa
1个回答

1

我曾经遇到过与上述描述相同的问题。特别值得注意的是,当在用于创建安装程序的文件夹中运行应用程序时,图标会显示出来;但在从安装文件夹安装并运行后,图标是不正确的(Windows 默认图标)。

我认为这是由于安装程序为该特定目录设置了注册表项以具有默认的 Windows 图标,因此将 .exe 文件移动到其他目录可以解决此问题。

查看安装日志,发现了一个线索,即 meta 文件夹中的 %system32% 中提到了一个图标(我从 Qt 网站上提取了一个示例 installscript.qs)。

首先删除此脚本中所有关于图标的提及。这并不能解决问题,因为已经为该文件夹路径创建了注册表项。最终的解决方法是更改安装位置,然后图标就能正常显示了。这让我花费了很多非常令人沮丧的时间才找到解决方法!


我遇到了一个与程序相同的问题,它在编译目录中显示图标,但安装后却不显示。你有没有找出注册表中导致图标丢失的关键字? - Dov Grobgeld

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