Auf dieser Seite

Qt Quick Shared Image Provider

Zusammenfassung

Dieses Modul bietet Funktionen zur Speicherersparnis in Anwendungsfällen, in denen mehrere „ Qt Quick “-Anwendungen dieselben lokalen Bilddateien verwenden. Dazu werden die dekodierten „ QImage “-Daten im gemeinsam genutzten Systemspeicher abgelegt, sodass sie für alle Prozesse zugänglich sind (siehe QSharedMemory).

Dieses Modul teilt ausschließlich CPU-Speicher. Es bietet keine gemeinsame Nutzung von GPU-Speicher oder Texturen.

Verwendung

Um dieses Modul zu verwenden, importieren Sie es wie folgt:

import Qt.labs.sharedimage

Die Freigabefunktion wird über eine „ QQuickImageProvider “ bereitgestellt. Verwenden Sie das Schema „image:“ für die URL-Quelle des Bildes, gefolgt von der Kennung „shared“ und dem Pfad zur Bilddatei. Zum Beispiel:

Image { source: "image://shared/usr/share/wallpapers/mybackground.jpg" }

Dadurch wird nach der Datei /usr/share/wallpapers/mybackground.jpg gesucht. Der erste Prozess, der dies tut, liest die Bilddatei wie beim normalen Laden von Bildern in Qt. Die dekodierten Bilddaten werden dann im gemeinsamen Speicher abgelegt, wobei der vollständige Dateipfad als Schlüssel verwendet wird. Spätere Prozesse, die dasselbe Bild anfordern, stellen fest, dass die Daten bereits im gemeinsamen Speicher verfügbar sind. Sie nutzen diese dann, anstatt die Bilddatei erneut zu laden.

Die gemeinsam genutzten Bilddaten bleiben so lange verfügbar, bis der letzte Prozess seinen letzten Verweis auf das gemeinsam genutzte Bild gelöscht hat; danach werden sie automatisch freigegeben.

Wenn die gemeinsame Speichernutzung des Systems nicht verfügbar ist, greift der Anbieter für gemeinsam genutzte Bilder auf das normale, nicht gemeinsam genutzte Laden von Bildern zurück.

Der Dateipfad muss absolut sein. Um einen relativen Pfad zu verwenden, wandeln Sie ihn mit Qt.resolvedUrl() in einen absoluten Pfad um und ersetzen Sie das URL-Schema. Beispiel:

...
property string imagePrefix: Qt.resolvedUrl("../myimages/").replace("file://", "image://shared/")
Image { source: imagePrefix + "myimage.png" }

Das Modul für gemeinsam genutzte Bilder stellt keine direkt verwendbaren QML-Typen bereit.

© 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.