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

问题描述 投票:3回答:5

我使用的是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文件正常工作。

干杯,

c++ qt qt4 qt-designer
5个回答
5
投票

* .ico不受支持。

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

格式说明Qt的支持

BMP Windows位图读/写

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

JPG联合图像专家组读/写

JPEG联合图像专家组读/写

PNG便携式网络图形读/写

PBM便携式位图读取

PGM Portable Graymap Read

PPM便携式Pixmap读/写

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

XBM X11位图读/写

XPM X11 Pixmap读/写


3
投票

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


2
投票

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


1
投票

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

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


1
投票

这里接受的答案是不正确的,或者在评论中提到,至少是误导性的。 Qt附带了一个用于处理ICO格式的插件,从4.4版开始。这是来自同一时代的similar question

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

This newer question已被标记为此重复,所以现在2个问题指向错误的答案。这就是为什么我在这里重复我的帖子。)

© www.soinside.com 2019 - 2024. All rights reserved.