QQmlAbstractUrlInterceptor Class

erlaubt es, das Laden von QML-Dateien zu kontrollieren. Mehr...

Kopfzeile: #include <QQmlAbstractUrlInterceptor>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml

Öffentliche Typen

enum DataType { QmldirFile, JavaScriptFile, QmlFile, UrlString }

Öffentliche Funktionen

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

Detaillierte Beschreibung

QQmlAbstractUrlInterceptor ist eine Schnittstelle, die verwendet werden kann, um URLs zu ändern, bevor sie von der QML-Engine verwendet werden. Dies ist vor allem nützlich, um Datei-URLs in andere Datei-URLs umzuwandeln, z.B. um verschiedene grafische Assets für die aktuelle Plattform auszuwählen.

Relative URLs werden abgefangen, nachdem sie gegen den Dateipfad des aktuellen QML-Kontexts aufgelöst wurden. Das Abfangen von URLs erfolgt auch nach dem Festlegen des Basispfads für eine geladene QML-Datei. Das bedeutet, dass der für diese QML-Datei geladene Inhalt die abgefangene URL verwendet, aber innerhalb der Datei wird die zuvor abgefangene URL für die Auflösung relativer Pfade verwendet. Dies ermöglicht das Abfangen des Ladens von .qml-Dateien, ohne dass alle Pfade (oder lokalen Typen) innerhalb des abgefangenen Inhalts einen anderen relativen Pfad einfügen müssen.

Im Vergleich zu setNetworkAccessManagerFactory wirkt QQmlAbstractUrlInterceptor auf alle URLs und Pfade, einschließlich lokaler Dateien und eingebetteter Ressourcendateien. QQmlAbstractUrlInterceptor ist synchron und muss für asynchrone Dateien eine URL mit einem asynchronen Schema zurückgeben (z. B. http oder ein benutzerdefiniertes Schema, das von Ihrem eigenen benutzerdefinierten QNetworkAccessManager behandelt wird). Sie können einen QQmlAbstractUrlInterceptor verwenden, um Datei-URLs in vernetzte URLs umzuwandeln, die von Ihrem eigenen benutzerdefinierten QNetworkAccessManager behandelt werden.

Um Unterstützung für ein benutzerdefiniertes Netzwerkschema zu implementieren, siehe setNetworkAccessManagerFactory.

Dokumentation der Mitgliedstypen

enum QQmlAbstractUrlInterceptor::DataType

Gibt an, wo das Abfangen der URL stattfindet.

Da QML qmldir-Dateien zum Auffinden von Typen lädt, sind beim Laden eines QML-Typs zwei URLs beteiligt. Die URL des (möglicherweise impliziten) qmldir, das zum Auffinden des Typs verwendet wird, und die URL der Datei, die den Typ definiert. Das Abfangen beider führt entweder zu einer komplexen URL-Ersetzung oder zu einer doppelten URL-Ersetzung für dieselbe Datei.

KonstanteWertBeschreibung
QQmlAbstractUrlInterceptor::QmldirFile2Die abgefangene URL ist für eine Qmldir-Datei. Wenn diese abgefangen wird, nicht aber die QmlFile, können ganze Teilbäume ausgetauscht werden.
QQmlAbstractUrlInterceptor::JavaScriptFile1Die abgefangene URL ist ein Import für eine Javascript-Datei.
QQmlAbstractUrlInterceptor::QmlFile0Die URL, die abgefangen wird, ist für eine Qml-Datei. Das Abfangen dieser, aber nicht der Qmldir-Datei, lässt das Basisverzeichnis einer QML-Datei unberührt und wirkt wie das Ersetzen der Datei durch eine andere Datei.
QQmlAbstractUrlInterceptor::UrlString0x1000Die abgefangene URL ist eine url-Eigenschaft in einer QML-Datei und wird nicht zum Laden einer Datei durch die Engine verwendet.

Dokumentation der Mitgliedsfunktionen

[constexpr noexcept] QQmlAbstractUrlInterceptor::QQmlAbstractUrlInterceptor()

Konstruktor für QQmlAbstractUrlInterceptor.

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

Destruktor für QQmlAbstractUrlInterceptor.

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

Eine rein virtuelle Funktion, mit der Sie die url abfangen können. Der zurückgegebene Wert wird als neuer Wert für die URL übernommen. Der Typ der abzufangenden Url wird durch die Variable type angegeben.

Ihre Implementierung dieser Funktion muss thread-sicher sein, da sie von mehreren Threads gleichzeitig aufgerufen werden kann.

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