Qt Quick 共享图片提供者
摘要
本模块为在多个 Qt Quick 应用程序使用相同的本地图片文件的情况中节省内存提供功能。通过将解码的 QImage 数据放置在共享系统内存中,使其对所有进程可访问(见 QSharedMemory)。
本模块仅共享 CPU 内存。它不提供 GPU 内存或纹理的共享。
用法
要使用此模块,可以像这样导入
import Qt.labs.sharedimage
共享功能通过一个 QQuickImageProvider 提供。使用图像的 URL 源为 "image:" 方案,接着是标识符 shared,然后是图像文件路径。例如
Image { source: "image://shared/usr/share/wallpapers/mybackground.jpg" }
这将查找文件 /usr/share/wallpapers/mybackground.jpg。首先这样做的过程将使用正常的 Qt 图像加载来读取图像文件。然后,解码的图像数据将被放置在共享内存中,使用完整的文件路径作为键。稍后的请求相同图像的进程将发现数据已在共享内存中。他们将使用这些而不是再次加载图像文件。
共享图像数据将一直保持可用,直到最后一个请求该共享图像的进程删除其对共享图像的最后引用,此时它将自动释放。
如果系统内存共享不可用,则共享图像提供程序将回退到正常的不共享图像加载。
文件路径必须是绝对的。要使用相对路径,请使用 Qt.resolvedUrl() 使它成为绝对路径,并替换 URL 方案。例如
... property string imagePrefix: Qt.resolvedUrl("../myimages/").replace("file://", "image://shared/") Image { source: imagePrefix + "myimage.png" }
共享图像模块不提供任何可直接使用的 QML 类型。
© 2024 Qt 公司。本文件中包含的文档贡献是各自所有者的版权。本文件中提供的文档根据 GNU 通用文档许可协议版本 1.3 的条款授权,该许可协议由自由软件基金会发布。Qt 及相关标志是全球芬兰和其他国家的 Qt 公司的商标。所有其他商标均为各自所有者的财产。