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 엔진에 제공할 수 있습니다.

팩토리를 구현하려면 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()에서 반환할 객체의 신호가 다른 스레드에서 생성될 수 있는 객체의 슬롯에 연결되어 있는지 주의해야 합니다:

신호 및 스레드에 대한 자세한 내용은 스레드와 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.