从 Qt 资源文件加载 ico 时出现问题
Posted
技术标签:
【中文标题】从 Qt 资源文件加载 ico 时出现问题【英文标题】:Issue when loading an ico from a Qt resource file 【发布时间】:2013-01-22 10:42:36 【问题描述】:我使用的是 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 文件正在工作。
干杯,
【问题讨论】:
【参考方案1】:*.ico 不受支持。
Qt默认支持以下格式:
格式说明 Qt 的支持
BMP Windows 位图读取/写入
GIF 图形交换格式(可选)阅读
JPG 联合摄影专家组读/写
JPEG 联合图像专家组读/写
PNG 便携式网络图形读/写
PBM 便携式位图读取
PGM 便携式灰度图读取
PPM 便携式像素图读/写
TIFF 标记图像文件格式读/写
XBM X11 位图读取/写入
XPM X11 像素图读/写
【讨论】:
感谢四位您的回复。问题是 Qt Designer 让我将图标文件添加到资源文件中,然后 Qt Designer 预览器将图标显示为窗口图标。这很令人困惑。谢谢, 请注意,此信息现在具有误导性。 Qt从4.4版本开始可以打开ico
文件;从 5.4 版开始,该列表还包括 tga
、dds
、webp
、jpeg2000
、mng
和其他(可在 qtimageformats 存储库中找到)。【参考方案2】:
因为 QPixmap 不能简单地读取 .ico 文件, 如果您想了解有关支持的格式的更多信息,请查看文档 QPixmap
【讨论】:
链接已失效。内容移至:qt-project.org/doc/qt-5.0/qtgui/qpixmap.html【参考方案3】:这里接受的答案不正确,或者如 cmets 中所述,至少具有误导性。 Qt 从 4.4 版开始就带有一个用于处理 ICO 格式的插件。这是同一时代的similar question。
对于部署,需要将用于构建的 Qt 安装中的 plugins/imageformats/[lib]qico.[dll|so]
文件复制到其可执行文件的目录中。将其放在子文件夹中,如下所示:<your_executable>/imageformats/qico.dll
。如果测试调试版本,则需要 d
后缀版本的 lib (qicod.dll
)。
(This newer question 已被标记为与此重复,所以现在有 2 个问题指向错误的答案。这就是我在这里重复我的帖子的原因。)
【讨论】:
【参考方案4】:您可以将其格式转换为 Qt 支持的格式。
【讨论】:
【参考方案5】:从您对已经选择的答案的跟进中猜测,您可能希望将该 ICO 作为应用程序窗口图标。这是可能的,也可能是 Qt Designer 能够显示它的原因(试图猜测您的意图)。但是,拥有它并不涉及任何 QPixmap 编码,它纯粹是配置事务。在这里描述(是的,#worksforme):
http://doc.qt.digia.com/qt/appicon.html
【讨论】:
这也可以在:qt-project.org/doc/qt-5.0/qtdoc/appicon.html:[以上是关于从 Qt 资源文件加载 ico 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
将图像从项目资源复制到Objective-C中的文档文件夹时出现问题
QT修改mainwindow前的图标,在资源管理器上显示图标也改变