C
文件系统集成
为 Qt Quick Ultralite 实现文件系统集成
要从一个文件系统中加载资源,必须在应用程序中注册一个实现。它必须实现 Qul::PlatformInterface::Filesystem 和 Qul::PlatformInterface::File 类。关于 FatFS 文件系统的一个示例实现可以在 examples/fileloading/fatfs/fatfsfilesystem.h 中找到。
以下代码展示了这些类的示例实现
class MyFile : public Qul::PlatformInterface::File { public: MyFile(fileHandle) {...} uint64_t size(); int read(unsigned char *outputBuffer, uint64_t startOffset, unsigned int size); int close(); }
uint64_t MyFile::size() { return file_size; }
int MyFile::read(unsigned char *outputBuffer, uint64_t startOffset, unsigned int readSize) { int bytesRead; if (file_seek(startOffset) != OK) return -1; if (file_read(outputBuffer, readSize, &bytesRead) != OK) return -1; return bytesRead; }
int MyFile::close() { return file_close(); }
要将文件与应用程序 API 集成,必须将其包裹在文件系统中。
class MyFilesystem : public Qul::PlatformInterface::Filesystem { public: Qul::PlatformInterface::File *open(const char *fileName, Qul::PlatformInterface::File::Mode) { if (file_open(fileName, mode) != OK) return NULL; return Qul::PlatformInterface::qul_new<MyFile>(handle); } };
要使实现的文件系统对 Qt Quick Ultralite 可知,必须在应用程序中注册它。
static MyFilesystem filesystem; Qul::Application::addFilesystem(&filesystem);
Qt Quick Ultralite 将迭代所有已注册的文件系统,直到找到第一个返回文件实例的文件系统。
在某些 Qt 许可证下可用。
了解详情。