【问题标题】:Icons disappear on an other computer图标在另一台计算机上消失
【发布时间】:2012-06-26 23:27:22
【问题描述】:

我用 Qt Creator 创建了一个程序,并用发布模式编译了它。 我已经添加了所有必要的 DLL,并且一切都在我的计算机上运行良好。

问题是当我从另一台计算机启动程序时,我包含的所有图标都没有显示,而在我的计算机上一切看起来都很好。

这是从哪里来的?

编辑:图标加载到 qrc 文件中...

【问题讨论】:

  • 图片资源是否使用绝对路径?它们是否在您的应用程序中编译?它们是如何加载的?
  • 如果图标不是 PNG 格式,您很可能缺少相应的插件。 Qt 依赖于它支持的大多数数据格式的插件,您必须将其与您的应用程序一起分发。
  • 有关一些相关信息,请查看Windows DeploymentMac Deployment,尤其是关于Qt 插件。
  • @dirkgently 这些图标在资源 qrc 文件中,所以我认为它们是在我的应用程序中编译的...
  • @Bart 所有文件都是 .ico。我在哪里可以找到要分发的那些插件?我无法阅读您的文档,因为该网站已被阻止。

标签: c++ qt qt4 icons release


【解决方案1】:

Qt 对文件格式的大部分支持依赖于插件。为确保您的应用程序在非开发机器上部署时按预期工作,您必须确保您还部署了相关插件。如果你没有,文件的加载(在这种情况下是 ICO 图标)将简单地失败。

在这种情况下,重要的插件是 qico4.dll(如果您在 Windows 上)。

Qt 官方文档包含Qt deployment 的所有相关信息,包括WindowsMac。向下滚动到 Qt 插件的相关信息。

作为一种快速解决方案,您可以创建一个名为 imageformats 的目录作为包含可执行文件的文件夹的子目录,将 qico4.dll 复制到其中。

(注意:用户@smerlin 说这必须是相对于您的可执行目录的plugins/imageformats。我似乎记得我的应用程序不需要额外的plugins 目录,但如果我会更新我的答案发现确实是这样)。

【讨论】:

  • 我没有尝试只使用 /imageformats,但它适用于插件/imageformats。
  • 你能试试吗?只是为了逗我们开心(我现在不能在这里测试)。 :)
  • 我无法尝试,因为我错误地清除了我的整个项目,并且在这台工作计算机上,当您删除某些内容时,它会立即被粉碎而无需进入垃圾桶。所以基本上它是有效的,我只能说。
  • 好的,我明天看看能不能验证,并相应地更新我的答案。
  • 在 Ubuntu 13.04 x86_64 下,目录 plugins/imageformats/plugins/platforms/(相对于可执行位置的相对路径)必须明确符号链接到 imageformats/platforms/ 以使部署的应用程序正常工作。
猜你喜欢
  • 1970-01-01
  • 2016-04-16
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多