Класс 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.1/qqmlabstracturlinterceptor.html