从Qt资源文件加载ICO时出现问题

Issue when loading an ico from a Qt resource file

本文关键字:问题 ICO 加载 Qt 资源 源文件      更新时间:2023-10-16

我正在使用Qt Designer 4.8.4,我在QMainWindow资源文件中包括两个文件:.ico文件和.gif文件。从代码加载时,使用:

QPixmap p;
p.load(":/MyApp/media/logo.gif");  // does work
p.load(":/MyApp/media/logo.ico");  // does not work

gif 文件有效,但 ico 文件无效。有什么原因吗?我正在使用 ico 文件作为窗口图标,但在运行应用程序时它没有显示。

而且,是的,由于 GIF 文件正在工作,我已成功编译 qrc 文件。

干杯

不支持

*.ico。

默认情况下,Qt支持以下格式:

格式说明 Qt的支持

BMP Windows 位图读/写

GIF 图形交换格式(可选)读取

JPG联合图像专家组读/写

JPEG联合图像专家组读/写

PNG 便携式网络图形读/写

PBM 便携式位图读取

PGM 便携式灰度图读取

PPM 便携式像素图读/写

TIFF标记的图像文件格式读/写

XBM X11 位图读/写

XPM X11 像素图读/写

因为QPixmap无法简单地读取.ico文件,如果您想了解有关支持的格式的更多信息,请查看文档QPixmap

这里接受的答案是不正确的,或者如评论中所述,至少具有误导性。 Qt自4.4版以来就带有一个用于处理ICO格式的插件。 这是同一时代的类似问题。

对于部署,需要将plugins/imageformats/[lib]qico.[dll|so]文件从用于构建的Qt安装复制到其可执行文件的目录中。把它放在一个子文件夹中,就像这样:<your_executable>/imageformats/qico.dll .如果测试调试版本,则需要 lib 的d后缀版本 ( qicod.dll )。

(这个较新的问题已被标记为重复,所以现在有 2 个问题指向错误的答案。这就是为什么我基本上在这里重复我的帖子。

你可以将其格式转换为Qt支持的格式。

从你对已经选择的答案的跟进中猜测,你可能希望将该ICO作为appwindow图标。这是可能的,也许也是Qt Designer能够显示它的原因(试图猜测你的意图)。但是,这样做不涉及任何QPixmap编码,这纯粹是配置事务。在这里描述(是的,#worksforme):

http://doc.qt.digia.com/qt/appicon.html