Auf dieser Seite

QQmlNetworkAccessManagerFactory Class

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

Header: #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

Ausführliche Beschreibung

Eine QML-Engine nutzt „ QNetworkAccessManager “ für den gesamten Netzwerkzugriff. Durch die Implementierung einer Factory ist es möglich, der QML-Engine benutzerdefinierte „ QNetworkAccessManager “-Instanzen mit spezieller Unterstützung für Caching, Proxy und Cookies zur Verfügung zu stellen.

Um eine Factory zu implementieren, erstellen Sie eine Unterklasse von `QQmlNetworkAccessManagerFactory` und implementieren Sie die virtuelle Methode ` create()`. Weisen Sie diese anschließend mithilfe von ` QQmlEngine::setNetworkAccessManagerFactory()` der entsprechenden QML-Engine zu. Beispielsweise cachen die durch den folgenden Codeausschnitt erstellten ` QNetworkAccessManager `-Objekte Anfragen.

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 möglicherweise „ QNetworkAccessManager “-Instanzen aus mehreren Threads erstellt. 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 zu Signalen und Threads finden Sie unter „Threads und QObjects “ sowie „Signale und Slots über Threads hinweg“.

Siehe auch QNetworkDiskCache.

Dokumentation zu Mitgliedsfunktionen

[virtual noexcept] QQmlNetworkAccessManagerFactory::~QQmlNetworkAccessManagerFactory()

Löst den Konstruktor auf. Die Standardimplementierung führt keine Aktion aus.

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

Erstellt und gibt einen Netzwerkzugriffsmanager mit dem angegebenen ` parent` zurück. Diese Methode muss bei jedem Aufruf eine neue Instanz von ` QNetworkAccessManager ` zurückgeben.

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

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