Класс QQmlAbstractUrlInterceptor
позволяет управлять загрузкой файлов QML. Подробнее...
| Заголовок: | #include <QQmlAbstractUrlInterceptor> |
| CMake: | find_package(Qt6 COMPONENTS Qml REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
Публичные типы
| перечисление | DataType { QmldirFile, JavaScriptFile, QmlFile, UrlString } |
Публичные функции
| QQmlAbstractUrlInterceptor() | |
| виртуальный | ~QQmlAbstractUrlInterceptor() |
| виртуальный QUrl | intercept(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type) = 0 |
Подробное описание
QQmlAbstractUrlInterceptor — это интерфейс, который можно использовать для изменения URL-адресов перед их использованием движком QML. Это в первую очередь полезно для изменения URL-адресов файлов в другие URL-адреса файлов, такие как выбор различных графических активов для текущей платформы.
Относительные URL-адреса перехватываются после разрешения относительно пути к файлу текущего контекста QML. Перехват URL-адресов также происходит после установки базового пути для загруженного файла QML. Это означает, что содержимое, загруженное для этого файла QML, использует перехваченный URL-адрес, но внутри файла используется предварительно перехваченный URL-адрес для разрешения относительных путей. Это позволяет перехватывать загрузку файлов .qml, не требуя всех путей (или локальных типов) внутри перехваченного содержимого для вставки другого относительного пути.
По сравнению с setNetworkAccessManagerFactory, QQmlAbstractUrlInterceptor влияет на все URL-адреса и пути, включая локальные файлы и встроенные файлы ресурсов. QQmlAbstractUrlInterceptor синхронный, и для асинхронных файлов должен возвращать URL-адрес с асинхронной схемой (например, http или пользовательской схемой, обрабатываемой вашим собственным пользовательским QNetworkAccessManager). Вы можете использовать QQmlAbstractUrlInterceptor для изменения URL-адресов файлов на сетевые URL-адреса, которые обрабатываются вашим собственным пользовательским QNetworkAccessManager.
Для реализации поддержки пользовательской сетевой схемы см. setNetworkAccessManagerFactory.
Документация по типам членов
перечисление QQmlAbstractUrlInterceptor::DataType
Указывает, где происходит перехват URL-адресов.
Поскольку QML загружает файлы qmldir для поиска типов, в загрузке типа участвуют два URL-адреса. URL-адрес (возможно, неявного) qmldir, используемого для поиска типа, и URL-адрес файла, определяющего тип. Перехват обоих приводит либо к сложному замене URL-адресов, либо к двойному замене URL-адресов для одного и того же файла.
| Постоянная | Значение | Описание |
|---|---|---|
QQmlAbstractUrlInterceptor::QmldirFile |
2 |
Перехватываемый URL-адрес относится к файлу Qmldir. Перехват этого, но не QmlFile, позволяет заменить целые поддеревья. |
QQmlAbstractUrlInterceptor::JavaScriptFile |
1 |
Перехватываемый URL-адрес — это импорт файла Javascript. |
QQmlAbstractUrlInterceptor::QmlFile |
0 |
Перехватываемый URL-адрес относится к файлу Qml. Перехват этого, но не файла Qmldir, оставляет базовый каталог файла QML без изменений и действует так, как будто файл заменяется другим файлом. |
QQmlAbstractUrlInterceptor::UrlString |
0x1000 |
Перехватываемый URL-адрес — это свойство url в файле QML, которое не используется для загрузки файла через движок. |
Документация по функциям членов
QQmlAbstractUrlInterceptor::QQmlAbstractUrlInterceptor()
Конструктор для QQmlAbstractUrlInterceptor.
[virtual] QQmlAbstractUrlInterceptor::~QQmlAbstractUrlInterceptor()
Деструктор для QQmlAbstractUrlInterceptor.
[pure virtual] QUrl QQmlAbstractUrlInterceptor::intercept(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type)
Чистая виртуальная функция, где вы можете перехватить url. Возвращаемое значение используется как новое значение для url. Тип перехватываемого url задаётся переменной type.
Ваша реализация этой функции должна быть потокобезопасной, так как её можно вызывать из нескольких потоков одновременно.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qqmlabstracturlinterceptor.html