Класс 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 для поиска типов, при загрузке типа QML участвуют два 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.2/qqmlabstracturlinterceptor.html