我在Qt中使用fopen(filename.c_str(), "rb");
图片资源。
但是fopen
想要一条完整的道路。如果我的文件名为:/images/img.png
,则无效。
答案 0 :(得分:5)
fopen
不属于Qt。 Qt的资源系统仅适用于Qt类。有关详细信息,请参阅Using Resources in the Application的Qt文档。
用于资源的Qt类首先检查给定的文件名是否以资源标记(:
)开头,如果是,则它们在内部查找资源(没有打开物理文件!),否则,它们打开物理文件。请注意,资源在编译期间(使用Qt资源编译器)包含在应用程序的源代码中(作为一个简单的字节数组),并在内部使用Qt中的特殊资源读取器进行读取,这可以将资源文件视为< em>将作为物理文件,但它仍然不是。
如果您将资源文件路径(以:
开头)传递给fopen
会怎样? fopen
尝试读取名为:
的物理目录,并在此目录中搜索您提供的子路径。当然,硬盘上不存在这样的目录,因为该文件是可执行文件的一部分。 (并且请不要尝试通过使用fopen
打开可执行文件并寻求资源来手动从可执行文件中读取资源文件!)
在您的具体情况中:您是否尝试使用外部图像阅读器阅读图像? Qt有自己的PNG阅读器。只需调用QImage(QString filename)
构造函数。