Qt图标嵌入可执行文件

7
我在一个选项卡窗口中有一些按钮,这些按钮需要在上面放置一些图标。
我知道QPixmap可以让我在按钮上放置图像,但我看到这些构造函数需要一个文件路径作为参数。我希望避免在构建后拖动图标文件。我想以某种方式将这些图标嵌入到可执行文件中,以减少需要携带的负担。
我该如何实现这个目标?
如果您对我使用的某些术语感到困惑,请专注于实现我的目标而非术语解释,因为我仍在学习Qt。
3个回答

12

当然,您可以将图标、图像和所有其他自定义资源嵌入到您的应用程序中。请阅读Qt 4 的资源系统 (或者点击这里查看 Qt 5)。


5
您将拥有一个名为ProjectName.qrc的资源文件,其中列出了图标(通常是PNG格式)。使用Qt Creator时,它已经为您准备了一个空白的QRC文件。在指定“文件”时,您使用的语法方式类似于“:/Images/MyCrazyIcon.png”,然后从嵌入到可执行文件中的资源中加载图标。请注意,Qt并没有以最完美的方式管理资源,即使不总是占用系统内存,也可以在需要时加载它们;它们始终会占用系统内存,如果它们很小,这真的不是什么大问题。对于您想要稍后清除的大型图形,只需指定真实的文件名(例如,“MyBigFile.png”而不是“:/MyBigFile.png”,后者指向可执行文件中的资源)。
使用资源语法,冒号字符“:”的力量在于,您甚至可以拥有“:MyFile.png”的格式,前提是QRC文件位于与资源相同的目录中。这就是我所做的,到目前为止,我还没有看到这种语法的任何缺点。我讨厌在语法中包含“.../Images/...”,因此我的资源名称使用“:MyPic.png”来寻址,而不是较长的“:/Images/MyPic.png”,所有的都正常工作。
Qt文档指出,目前他们不支持Windows和Mac支持的真正资源处理,但是未来可能会有所改变。请记住,“真正的资源支持”是指您可以将多兆字节的图形和声音放置在可执行文件中,并且永远不必担心它们在请求它们的魔法时间之前加载到内存中。 QRC资源在加载可执行文件时加载到内存中。通过可加载文件支持进行的换肤完全弥补了这个缺点。 Qt正在快速改进,有一天他们可能会非常好地支持Windows和Mac资源系统。我变得冗余了,必须走了。大家给我点赞,我需要积分。

0
也许你可以尝试这个:
在你的 .pro 项目文件中添加一行代码: RC_ICONS = myappico.ico 更多信息请参考:设置应用程序图标

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