如何使用fopen访问资源图像?

时间:2012-06-22 10:03:47

标签: qt fopen

我在Qt中使用fopen(filename.c_str(), "rb");图片资源。

但是fopen想要一条完整的道路。如果我的文件名为:/images/img.png,则无效。

1 个答案:

答案 0 :(得分:5)

fopen不属于Qt。 Qt的资源系统仅适用于Qt类。有关详细信息,请参阅Using Resources in the Application的Qt文档。

用于资源的Qt类首先检查给定的文件名是否以资源标记(:)开头,如果是,则它们在内部查找资源(没有打开物理文件!),否则,它们打开物理文件。请注意,资源在编译期间(使用Qt资源编译器)包含在应用程序的源代码中(作为一个简单的字节数组),并在内部使用Qt中的特殊资源读取器进行读取,这可以将资源文件视为< em>将作为物理文件,但它仍然不是

如果您将资源文件路径(以:开头)传递给fopen会怎样? fopen尝试读取名为:物理目录,并在此目录中搜索您提供的子路径。当然,硬盘上不存在这样的目录,因为该文件是可执行文件的一部分。 (并且请不要尝试通过使用fopen打开可执行文件并寻求资源来手动从可执行文件中读取资源文件!)

在您的具体情况中:您是否尝试使用外部图像阅读器阅读图像? Qt有自己的PNG阅读器。只需调用QImage(QString filename)构造函数。