QQmlNetworkAccessManagerFactory Class

Die Klasse QQmlNetworkAccessManagerFactory erstellt QNetworkAccessManager Instanzen für eine QML-Engine. Mehr...

Kopfzeile: #include <QQmlNetworkAccessManagerFactory>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml

Öffentliche Funktionen

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

Detaillierte Beschreibung

Eine QML-Engine verwendet QNetworkAccessManager für alle Netzwerkzugriffe. Durch die Implementierung einer Factory ist es möglich, der QML-Engine benutzerdefinierte QNetworkAccessManager Instanzen mit spezieller Caching-, Proxy- und Cookie-Unterstützung zur Verfügung zu stellen.

Um eine Fabrik zu implementieren, untergliedern Sie die Klasse QQmlNetworkAccessManagerFactory, implementieren die virtuelle Methode create() und weisen sie dann mit QQmlEngine::setNetworkAccessManagerFactory() der entsprechenden QML-Engine zu. Zum Beispiel werden die QNetworkAccessManager Objekte, die durch das folgende Snippet erstellt werden, Anfragen zwischenspeichern.

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

Die Factory kann dann an die QML-Engine übergeben werden, damit diese die QNetworkAccessManager mit dem benutzerdefinierten Verhalten instanziieren kann.

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

Beachten Sie, dass die QML-Engine QNetworkAccessManager Instanzen von mehreren Threads aus erstellen kann. Aus diesem Grund muss die Implementierung der Methode create() reentrant sein. Darüber hinaus sollte der Entwickler vorsichtig sein, wenn die Signale des Objekts, das von create() zurückgegeben werden soll, mit den Slots eines Objekts verbunden sind, das möglicherweise in einem anderen Thread erstellt wird:

Weitere Informationen über Signale und Threads finden Sie unter Threads und QObjects und Signale und Slots über Threads hinweg.

Siehe auch QNetworkDiskCache.

Dokumentation der Mitgliedsfunktionen

[virtual noexcept] QQmlNetworkAccessManagerFactory::~QQmlNetworkAccessManagerFactory()

Zerstört die Fabrik. Die Standardimplementierung tut nichts.

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

Erzeugt einen Netzzugangsmanager mit der angegebenen parent und gibt ihn zurück. Diese Methode muss bei jedem Aufruf eine neue QNetworkAccessManager -Instanz zurückgeben.

Hinweis: Diese Methode kann von mehreren Threads aufgerufen werden; stellen Sie daher sicher, dass die Implementierung dieser Methode reentrant ist.

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