Auf dieser Seite

QQmlAbstractUrlInterceptor Class

ermöglicht es Ihnen, das Laden von QML-Dateien zu steuern. Mehr...

Überschrift: #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

Ausführliche Beschreibung

QQmlAbstractUrlInterceptor ist eine Schnittstelle, mit der URLs geändert werden können, bevor sie von der QML-Engine verwendet werden. Dies ist vor allem nützlich, um Datei-URLs in andere Datei-URLs umzuwandeln, beispielsweise um unterschiedliche grafische Elemente für die aktuelle Plattform auszuwählen.

Relative URLs werden abgefangen, nachdem sie anhand des Dateipfads 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, innerhalb der Datei jedoch die vor dem Abfangen vorhandene URL zum Auflösen relativer Pfade genutzt wird. Dies ermöglicht das Abfangen beim Laden von .qml-Dateien, ohne dass alle Pfade (oder lokalen Typen) innerhalb des abgefangenen Inhalts geändert werden müssen, um einen anderen relativen Pfad einzufügen.

Im Vergleich zu `setNetworkAccessManagerFactory` wirkt sich `QQmlAbstractUrlInterceptor` auf alle URLs und Pfade aus, einschließlich lokaler Dateien und eingebetteter Ressourcendateien. „QQmlAbstractUrlInterceptor“ arbeitet synchron; bei asynchronen Dateien muss daher eine URL mit einem asynchronen Schema (wie z. B. „http“ oder ein benutzerdefiniertes Schema, das von Ihrem eigenen „ QNetworkAccessManager “ verarbeitet wird) zurückgegeben werden. Sie können einen „QQmlAbstractUrlInterceptor“ verwenden, um Datei-URLs in Netzwerk-URLs umzuwandeln, die von Ihrem eigenen „ QNetworkAccessManager “ verarbeitet werden.

Informationen zur Implementierung der Unterstützung für ein benutzerdefiniertes Netzwerkschema finden Sie unter `setNetworkAccessManagerFactory`.

Dokumentation zu Mitgliedstypen

enum QQmlAbstractUrlInterceptor::DataType

Gibt an, wo die URL-Abfangung 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 URLs führt entweder zu einer komplexen URL-Ersetzung oder zu doppelten URL-Ersetzungen für dieselbe Datei.

KonstanteWertBeschreibung
QQmlAbstractUrlInterceptor::QmldirFile2Die abgefangene URL bezieht sich auf eine „qmldir“-Datei. Das Abfangen dieser URL, nicht jedoch der „QmlFile“-Datei, ermöglicht das Austauschen ganzer Unterbäume.
QQmlAbstractUrlInterceptor::JavaScriptFile1Die abgefangene URL ist ein Import für eine JavaScript-Datei.
QQmlAbstractUrlInterceptor::QmlFile0Die abgefangene URL bezieht sich auf eine Qml-Datei. Das Abfangen dieser URL – im Gegensatz zur Qmldir-Datei – lässt das Basisverzeichnis einer QML-Datei unberührt und wirkt so, als würde die Datei durch eine andere ersetzt.
QQmlAbstractUrlInterceptor::UrlString0x1000Die abgefangene URL ist eine URL-Eigenschaft in einer QML-Datei und wird nicht zum Laden einer Datei über die Engine verwendet.

Dokumentation der Mitgliedsfunktionen

[constexpr noexcept default] QQmlAbstractUrlInterceptor::QQmlAbstractUrlInterceptor()

Konstruktor für QQmlAbstractUrlInterceptor.

[virtual constexpr noexcept default] 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 Rückgabewert wird als neuer Wert für die URL übernommen. Der Typ der abgefangenen URL wird durch die Variable ` type ` angegeben.

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

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