Sur cette page

QQmlAbstractUrlInterceptor Class

vous permet de contrôler le chargement des fichiers QML. En savoir plus...

En-tête : #include <QQmlAbstractUrlInterceptor>
CMake : find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake : QT += qml

Types publics

enum DataType { QmldirFile, JavaScriptFile, QmlFile, UrlString }

Fonctions publiques

QQmlAbstractUrlInterceptor()
virtual ~QQmlAbstractUrlInterceptor()
virtual QUrl intercept(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type) = 0

Description détaillée

QQmlAbstractUrlInterceptor est une interface qui permet de modifier les URL avant qu’elles ne soient utilisées par le moteur QML. Elle est principalement utile pour remplacer des URL de fichiers par d’autres URL de fichiers, par exemple pour sélectionner des ressources graphiques différentes en fonction de la plateforme actuelle.

Les URL relatives sont interceptées après avoir été résolues par rapport au chemin d'accès au fichier du contexte QML actuel. L'interception des URL se produit également après la définition du chemin de base d'un fichier QML chargé. Cela signifie que le contenu chargé pour ce fichier QML utilise l'URL interceptée, mais qu'à l'intérieur du fichier, c'est l'URL pré-interceptée qui est utilisée pour résoudre les chemins relatifs. Cela permet d’intercepter le chargement des fichiers .qml sans qu’il soit nécessaire d’insérer un chemin relatif différent dans tous les chemins (ou types locaux) du contenu intercepté.

Contrairement à `setNetworkAccessManagerFactory`, `QQmlAbstractUrlInterceptor` affecte toutes les URL et tous les chemins, y compris les fichiers locaux et les fichiers de ressources intégrés. QQmlAbstractUrlInterceptor est synchrone ; pour les fichiers asynchrones, il doit renvoyer une URL avec un schéma asynchrone (tel que http ou un schéma personnalisé géré par votre propre QNetworkAccessManager). Vous pouvez utiliser un QQmlAbstractUrlInterceptor pour transformer les URL de fichiers en URL réseau gérées par votre propre QNetworkAccessManager.

Pour implémenter la prise en charge d’un schéma réseau personnalisé, consultez la méthode setNetworkAccessManagerFactory.

Documentation sur les types de membres

enum QQmlAbstractUrlInterceptor::DataType

Spécifie l'emplacement où s'effectue l'interception des URL.

Comme QML charge les fichiers qmldir pour localiser les types, deux URL sont impliquées dans le chargement d'un type QML. L'URL du fichier qmldir (éventuellement implicite) utilisé pour localiser le type et l'URL du fichier qui définit le type. Intercepter les deux entraîne soit un remplacement d'URL complexe, soit des remplacements d'URL en double pour le même fichier.

ConstanteValeurDescription
QQmlAbstractUrlInterceptor::QmldirFile2L'URL interceptée correspond à un fichier qmldir. L'interception de celle-ci, mais pas du QmlFile, permet de remplacer des sous-arborescences entières.
QQmlAbstractUrlInterceptor::JavaScriptFile1L'URL interceptée correspond à l'importation d'un fichier JavaScript.
QQmlAbstractUrlInterceptor::QmlFile0L'URL interceptée correspond à un fichier Qml. Intercepter cette URL, mais pas le fichier Qmldir, laisse le répertoire de base d'un fichier QML inchangé et revient à remplacer le fichier par un autre.
QQmlAbstractUrlInterceptor::UrlString0x1000L'URL interceptée est une propriété « url » dans un fichier QML, et n'est pas utilisée pour charger un fichier via le moteur.

Documentation des fonctions membres

[constexpr noexcept default] QQmlAbstractUrlInterceptor::QQmlAbstractUrlInterceptor()

Constructeur de la classe QQmlAbstractUrlInterceptor.

[virtual constexpr noexcept default] QQmlAbstractUrlInterceptor::~QQmlAbstractUrlInterceptor()

Destructeur pour ` QQmlAbstractUrlInterceptor`.

[pure virtual] QUrl QQmlAbstractUrlInterceptor::intercept(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type)

Une fonction virtuelle pure permettant d'intercepter l'url. La valeur renvoyée est considérée comme la nouvelle valeur de l'URL. Le type de l'URL interceptée est indiqué par la variable type.

Votre implémentation de cette fonction doit être sûre pour les threads, car elle peut être appelée simultanément depuis plusieurs threads.

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