C

文件系统集成

为 Qt Quick Ultralite 实现文件系统集成

要从一个文件系统中加载资源,必须在应用程序中注册一个实现。它必须实现 Qul::PlatformInterface::FilesystemQul::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 许可证下可用。
了解详情。