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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QQmlAbstractUrlInterceptor::QmldirFile | 2 | Die 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::JavaScriptFile | 1 | Die abgefangene URL ist ein Import für eine JavaScript-Datei. |
QQmlAbstractUrlInterceptor::QmlFile | 0 | Die 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::UrlString | 0x1000 | Die 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.