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

时间:2013-01-22 10:42:37

标签: c++ qt qt4 qt-designer

我使用的是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文件作为窗口图标,并且在运行应用程序时没有显示。

并且,是的,我正在成功编译qrc文件,因为 GIF文件正在运行

干杯,

5 个答案:

答案 0 :(得分:5)

*。不支持ico。

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

格式说明Qt的支持

BMP Windows位图读/写

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

JPG联合图像专家组读/写

JPEG联合图像专家组读/写

PNG便携式网络图形读/写

PBM便携式位图读取

PGM Portable Graymap Read

PPM Portable Pixmap读/写

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

XBM X11位图读/写

XPM X11 Pixmap读/写

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

此处接受的答案不正确,或者如评论中所述,至少具有误导性。从版本4.4开始,Qt附带了一个用于处理ICO格式的插件。这是同一时代的similar question

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

({This newer question被标记为重复的,所以现在有两个问题指向错误的答案。这就是为什么我在这里重复我的帖子的原因。)