Sur cette page

QQmlNetworkAccessManagerFactory Class

La classe QQmlNetworkAccessManagerFactory crée des instances QNetworkAccessManager pour un moteur QML. Plus d'informations...

En-tête : #include <QQmlNetworkAccessManagerFactory>
CMake : find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake : QT += qml

Fonctions publiques

virtual ~QQmlNetworkAccessManagerFactory()
virtual QNetworkAccessManager *create(QObject *parent) = 0

Description détaillée

Un moteur QML utilise QNetworkAccessManager pour tous les accès réseau. En implémentant une fabrique, il est possible de fournir au moteur QML des instances personnalisées de QNetworkAccessManager avec un support spécialisé de cache, de proxy et de cookies.

Pour mettre en œuvre une fabrique, sous-classez QQmlNetworkAccessManagerFactory et mettez en œuvre la méthode virtuelle create(), puis affectez-la au moteur QML approprié à l'aide de QQmlEngine::setNetworkAccessManagerFactory(). Par exemple, les objets QNetworkAccessManager créés par l'extrait suivant mettront en cache les demandes.

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;
    }
};

La fabrique peut ensuite être transmise au moteur QML afin qu'il puisse instancier l'objet QNetworkAccessManager avec le comportement personnalisé.

CachingNetworkAccessManagerFactory networkManagerFactory;
engine->setNetworkAccessManagerFactory(&networkManagerFactory);

Notez que le moteur QML peut créer des instances QNetworkAccessManager à partir de plusieurs threads. Pour cette raison, l'implémentation de la méthode create() doit être reentrant. En outre, le développeur doit être prudent si les signaux de l'objet à renvoyer par create() sont connectés aux slots d'un objet qui peut être créé dans un autre thread :

Pour plus d'informations sur les signaux et les threads, voir Threads et QObjects et Signals and Slots Across Threads.

Voir également QNetworkDiskCache.

Documentation des fonctions membres

[virtual noexcept] QQmlNetworkAccessManagerFactory::~QQmlNetworkAccessManagerFactory()

Détruit l'usine. L'implémentation par défaut ne fait rien.

[pure virtual] QNetworkAccessManager *QQmlNetworkAccessManagerFactory::create(QObject *parent)

Crée et renvoie un gestionnaire d'accès au réseau avec l'adresse parent spécifiée. Cette méthode doit renvoyer une nouvelle instance QNetworkAccessManager chaque fois qu'elle est appelée.

Remarque : cette méthode peut être appelée par plusieurs threads, il faut donc s'assurer que l'implémentation de cette méthode est réentrante.

© 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.