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 ) 인스턴스를 반환해야 합니다.
참고: 이 메서드는 여러 스레드에서 호출될 수 있으므로, 이 메서드의 구현이 재진입 가능하도록 해야 합니다.
© 2026 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.