diff options
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/doc/snippets/code/src_network_access_qnetworkaccessmanager.cpp | 24 | ||||
-rw-r--r-- | src/qml/qml/qqmlnetworkaccessmanagerfactory.cpp | 14 |
2 files changed, 37 insertions, 1 deletions
diff --git a/src/qml/doc/snippets/code/src_network_access_qnetworkaccessmanager.cpp b/src/qml/doc/snippets/code/src_network_access_qnetworkaccessmanager.cpp new file mode 100644 index 0000000000..b200261035 --- /dev/null +++ b/src/qml/doc/snippets/code/src_network_access_qnetworkaccessmanager.cpp @@ -0,0 +1,24 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +//! [0] +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; + } +}; +//! [0] + +//! [1] +CachingNetworkAccessManagerFactory networkManagerFactory; +engine->setNetworkAccessManagerFactory(&networkManagerFactory); +//! [1] diff --git a/src/qml/qml/qqmlnetworkaccessmanagerfactory.cpp b/src/qml/qml/qqmlnetworkaccessmanagerfactory.cpp index 05c9347fab..a03bfc15c7 100644 --- a/src/qml/qml/qqmlnetworkaccessmanagerfactory.cpp +++ b/src/qml/qml/qqmlnetworkaccessmanagerfactory.cpp @@ -18,9 +18,20 @@ QT_BEGIN_NAMESPACE with custom QNetworkAccessManager instances with specialized caching, proxy and cookies support. + \list + \li The QNetworkDiskCache can be used as a request cache with \l {QNetworkDiskCache}. + \li Using \l {QNetworkProxy}, traffic sent by the QNetworkAccessManager can be tunnelled through a proxy. + \li Cookies can be saved for future requests by adding a \l {QNetworkCookieJar}. + \endlist + To implement a factory, subclass QQmlNetworkAccessManagerFactory and implement the virtual create() method, then assign it to the relevant QML - engine using QQmlEngine::setNetworkAccessManagerFactory(). + engine using QQmlEngine::setNetworkAccessManagerFactory(). For instance, the QNetworkAccessManager + objects created by the following snippet will cache requests. + \snippet code/src_network_access_qnetworkaccessmanager.cpp 0 + + The factory can then be passed to the QML engine so it can instantiate the QNetworkAccessManager with the custom behavior. + \snippet code/src_network_access_qnetworkaccessmanager.cpp 1 Note the QML engine may create QNetworkAccessManager instances from multiple threads. Because of this, the implementation of the create() @@ -45,6 +56,7 @@ QT_BEGIN_NAMESPACE \l {Threads and QObjects} and \l {Signals and Slots Across Threads}. \sa {C++ Extensions: Network Access Manager Factory Example}{Network Access Manager Factory Example} + \sa QNetworkDiskCache */ /*! |