QQmlNetworkAccessManagerFactory Class
QQmlNetworkAccessManagerFactory 클래스는 QML 엔진에 대한 QNetworkAccessManager 인스턴스를 생성합니다. 더 보기...
헤더: | #include <QQmlNetworkAccessManagerFactory> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake: | QT += qml |
공용 함수
virtual | ~QQmlNetworkAccessManagerFactory() |
virtual QNetworkAccessManager * | create(QObject *parent) = 0 |
상세 설명
QML 엔진은 모든 네트워크 액세스에 QNetworkAccessManager 을 사용합니다. 팩토리를 구현하면 특수 캐싱, 프록시 및 쿠키를 지원하는 사용자 정의 QNetworkAccessManager 인스턴스를 QML 엔진에 제공할 수 있습니다.
- QNetworkDiskCache 은 QNetworkDiskCache 과 함께 요청 캐시로 사용할 수 있습니다.
- QNetworkProxy 을 사용하면 QNetworkAccessManager 에서 전송된 트래픽을 프록시를 통해 터널링할 수 있습니다.
- QNetworkCookieJar 을 추가하여 향후 요청을 위해 쿠키를 저장할 수 있습니다.
팩토리를 구현하려면 QQmlNetworkAccessManagerFactory를 서브클래싱하고 가상 create() 메서드를 구현한 다음 QQmlEngine::setNetworkAccessManagerFactory() 를 사용하여 관련 QML 엔진에 할당합니다. 예를 들어, 다음 스니펫에서 생성된 QNetworkAccessManager 객체는 요청을 캐시합니다.
class CachingNetworkAccessManagerFactory : public QQmlNetworkAccessManagerFactory { public: inline QNetworkAccessManager *create(QObject *parent) override { QNetworkAccessManager *networkAccessManager = new QNetworkAccessManager(parent); QNetworkDiskCache *diskCache = new QNetworkDiskCache(parent); diskCache->setCacheDirectory("requestCache"); networkAccessManager->setCache(diskCache); return networkAccessManager; } };
그런 다음 팩토리를 QML 엔진에 전달하여 사용자 지정 동작으로 QNetworkAccessManager 을 인스턴스화할 수 있습니다.
CachingNetworkAccessManagerFactory networkManagerFactory; engine->setNetworkAccessManagerFactory(&networkManagerFactory);
QML 엔진은 여러 스레드에서 QNetworkAccessManager 인스턴스를 생성할 수 있습니다. 따라서 create() 메서드의 구현은 reentrant 이어야 합니다. 또한 개발자는 create()에서 반환할 객체의 신호가 다른 스레드에서 생성될 수 있는 객체의 슬롯에 연결되어 있는지 주의해야 합니다:
- QML 엔진은 내부적으로 모든 요청을 처리하고 생성된 모든 QNetworkReply 객체를 정리합니다. 이미 삭제된 경우 다른 스레드에서 QNetworkAccessManager::finished() 신호를 수신하면 수신자에게 유효한 응답 개체가 제공되지 않을 수 있습니다.
- QNetworkAccessManager::authenticationRequired()에 제공된 인증 세부 정보는 즉시 제공되어야 하므로 이 신호는 Qt::QueuedConnection (또는 다른 스레드의 기본값 Qt::AutoConnection )으로 연결할 수 없습니다.
신호 및 스레드에 대한 자세한 내용은 스레드와 QObject 및 스레드 간 신호 및 슬롯을 참조하세요.
QNetworkDiskCache도 참조하세요 .
멤버 함수 문서
[virtual noexcept]
QQmlNetworkAccessManagerFactory::~QQmlNetworkAccessManagerFactory()
팩토리를 파괴합니다. 기본 구현은 아무 작업도 수행하지 않습니다.
[pure virtual]
QNetworkAccessManager *QQmlNetworkAccessManagerFactory::create(QObject *parent)
지정된 parent 으로 네트워크 액세스 관리자를 생성하고 반환합니다. 이 메서드는 호출될 때마다 새 QNetworkAccessManager 인스턴스를 반환해야 합니다.
참고: 이 메서드는 여러 스레드에서 호출될 수 있으므로 이 메서드의 구현이 재진입하는지 확인하세요.
© 2025 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.