Sur cette page

Qt Quick Shared Image Provider

Résumé

Ce module fournit une fonctionnalité permettant d'économiser de la mémoire dans les cas où plusieurs applications Qt Quick utilisent les mêmes fichiers d'image locaux. Pour ce faire, il place les données QImage décodées dans la mémoire partagée du système, ce qui les rend accessibles à tous les processus (voir QSharedMemory).

Ce module ne partage que la mémoire du processeur. Il ne permet pas le partage de la mémoire GPU ou des textures.

Utilisation

Pour utiliser ce module, il suffit de l'importer comme suit :

import Qt.labs.sharedimage

La fonctionnalité de partage est fournie par l'intermédiaire de QQuickImageProvider. Utilisez le schéma "image :" pour l'URL source de l'image, suivi de l'identifiant shared, suivi du chemin d'accès au fichier image. Par exemple :

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

Ceci recherchera le fichier /usr/share/wallpapers/mybackground.jpg. Le premier processus qui effectue cette opération lira le fichier image en utilisant le chargement d'image normal de Qt. Les données décodées de l'image seront alors placées dans la mémoire partagée, en utilisant le chemin complet du fichier comme clé. Les processus ultérieurs demandant la même image découvriront que les données sont déjà disponibles dans la mémoire partagée. Ils les utiliseront alors au lieu de charger à nouveau le fichier image.

Les données de l'image partagée resteront disponibles jusqu'à ce que le dernier processus ait supprimé sa dernière référence à l'image partagée.

Si le partage de la mémoire système n'est pas disponible, le fournisseur d'images partagées revient au chargement normal d'images non partagées.

Le chemin d'accès au fichier doit être absolu. Pour utiliser un chemin relatif, rendez-le absolu en utilisant Qt.resolvedUrl() et remplacez le schéma de l'URL. Par exemple, le module d'images partagées ne fournit pas de chemin d'accès au fichier :

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

Le module d'images partagées ne fournit aucun type QML directement utilisable.

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