QQmlAbstractUrlInterceptor Class
permite controlar la carga de archivos QML. Más...
| Cabecera: | #include <QQmlAbstractUrlInterceptor> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml)target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
Tipos Públicos
| enum | DataType { QmldirFile, JavaScriptFile, QmlFile, UrlString } |
Funciones Públicas
| QQmlAbstractUrlInterceptor() | |
| virtual | ~QQmlAbstractUrlInterceptor() |
| virtual QUrl | intercept(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type) = 0 |
Descripción detallada
QQmlAbstractUrlInterceptor es una interfaz que puede ser utilizada para alterar URLs antes de que sean utilizadas por el motor QML. Esto es útil principalmente para alterar urls de archivos en otras urls de archivos, como seleccionar diferentes activos gráficos para la plataforma actual.
Las URL relativas se interceptan tras resolverse con la ruta de archivo del contexto QML actual. La interceptación de URL también se produce después de establecer la ruta base para un archivo QML cargado. Esto significa que el contenido cargado para ese archivo QML utiliza la URL interceptada, pero dentro del archivo se utiliza la URL preinterceptada para resolver las rutas relativas. Esto permite interceptar la carga de archivos .qml sin necesidad de que todas las rutas (o tipos locales) dentro del contenido interceptado inserten una ruta relativa diferente.
Comparado con setNetworkAccessManagerFactory, QQmlAbstractUrlInterceptor afecta a todas las URLs y rutas, incluyendo archivos locales y archivos de recursos incrustados. QQmlAbstractUrlInterceptor es síncrono, y para archivos asíncronos debe devolver una url con un esquema asíncrono (como http o un esquema personalizado manejado por tu propio personalizado QNetworkAccessManager). Puedes usar un QQmlAbstractUrlInterceptor para cambiar las URLs de archivos en URLs en red que son manejadas por tu propio QNetworkAccessManager personalizado.
Para implementar soporte para un esquema en red personalizado, vea setNetworkAccessManagerFactory.
Documentación de tipos de miembros
enum QQmlAbstractUrlInterceptor::DataType
Especifica dónde tiene lugar la interceptación de URL.
Dado que QML carga archivos qmldir para localizar tipos, hay dos URL implicadas en la carga de un tipo QML. La URL del qmldir (posiblemente implícito) utilizado para localizar el tipo y la URL del archivo que define el tipo. Si se interceptan ambas, se produce una sustitución compleja de URL o una doble sustitución de URL para el mismo archivo.
| Constante | Valor | Descripción |
|---|---|---|
QQmlAbstractUrlInterceptor::QmldirFile | 2 | La URL interceptada corresponde a un archivo Qmldir. Interceptando esto, pero no el QmlFile, permite intercambiar subárboles enteros. |
QQmlAbstractUrlInterceptor::JavaScriptFile | 1 | La URL interceptada es una importación de un archivo Javascript. |
QQmlAbstractUrlInterceptor::QmlFile | 0 | La URL interceptada es un archivo Qml. Interceptando esto, pero no el archivo Qmldir, deja la base dir de un archivo QML intacta y actúa como reemplazar el archivo con otro archivo. |
QQmlAbstractUrlInterceptor::UrlString | 0x1000 | La URL que se intercepta es una propiedad url de un archivo QML, y no se utiliza para cargar un archivo a través del motor. |
Documentación de las funciones miembro
[constexpr noexcept] QQmlAbstractUrlInterceptor::QQmlAbstractUrlInterceptor()
Constructor para QQmlAbstractUrlInterceptor.
[virtual constexpr noexcept] QQmlAbstractUrlInterceptor::~QQmlAbstractUrlInterceptor()
Destructor para QQmlAbstractUrlInterceptor.
[pure virtual] QUrl QQmlAbstractUrlInterceptor::intercept(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type)
Una función virtual pura donde se puede interceptar el url. El valor devuelto se toma como el nuevo valor para la url. El tipo de url que se intercepta viene dado por la variable type.
La implementación de esta función debe ser segura, ya que puede ser llamada desde múltiples hilos al mismo tiempo.
© 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.