Класс QQmlNetworkAccessManagerFactory
Класс QQmlNetworkAccessManagerFactory создаёт экземпляры QNetworkAccessManager для движка QML. Подробнее...
| Заголовок: | #include <QQmlNetworkAccessManagerFactory> |
| CMake: | find_package(Qt6 COMPONENTS Qml REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
| С момента: | Qt 5.0 |
Открытые функции
| virtual | ~QQmlNetworkAccessManagerFactory() |
| virtual QNetworkAccessManager * | create(QObject *parent) = 0 |
Подробное описание
Движок QML использует QNetworkAccessManager для всех сетевых операций. Реализовав фабрику, можно предоставить движку QML настраиваемые экземпляры QNetworkAccessManager со специализированной кешированием, прокси и поддержкой куки.
Для реализации фабрики, необходимо создать подкласс QQmlNetworkAccessManagerFactory и реализовать виртуальный метод create(), а затем назначить его соответствующему движку QML с помощью QQmlEngine::setNetworkAccessManagerFactory().
Обратите внимание, что движок QML может создавать экземпляры QNetworkAccessManager из нескольких потоков. Из-за этого реализация метода create() должна быть реентерабельной. Кроме того, разработчик должен быть осторожен, если сигналы объекта, возвращаемого методом create(), подключены к слотам объекта, который может быть создан в другом потоке:
- Движок QML внутри обрабатывает все запросы и очищает любые объекты QNetworkReply, которые он создаёт. Получение сигнала QNetworkAccessManager::finished() в другом потоке может не предоставить получателю валидный объект ответа, если он уже был удалён.
- Данные аутентификации, предоставленные QNetworkAccessManager::authenticationRequired(), должны быть предоставлены немедленно, поэтому этот сигнал не может быть подключён как Qt::QueuedConnection (или как по умолчанию Qt::AutoConnection из другого потока).
Дополнительную информацию о сигналах и потоках см. в разделе Потоки и QObjects и Сигналы и слоты между потоками.
См. такжеПример фабрики менеджера сетевого доступа.
Документация по членам функции
[virtual] QQmlNetworkAccessManagerFactory::~QQmlNetworkAccessManagerFactory()
Уничтожает фабрику. Реализация по умолчанию ничего не делает.
[pure virtual] QNetworkAccessManager *QQmlNetworkAccessManagerFactory::create(QObject *parent)
Создаёт и возвращает менеджер сетевого доступа с указанным parent. Этот метод должен возвращать новый экземпляр QNetworkAccessManager каждый раз, когда он вызывается.
Примечание: этот метод может вызываться из нескольких потоков, поэтому убедитесь, что реализация этого метода является реентерабельной.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qqmlnetworkaccessmanagerfactory.html