このページでは

Qt Quick Shared Image Provider

概要

このモジュールは、複数の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 タイプを一切提供しません。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.