This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
A QML engine uses
QNetworkAccessManager for all network access. By implementing a factory, it is possible to provide the QML engine with custom
QNetworkAccessManager instances with specialized caching, proxy and cookies support.
QNetworkDiskCachecan be used as a request cache with
QNetworkProxy, traffic sent by the
QNetworkAccessManagercan be tunnelled through a proxy.
Cookies can be saved for future requests by adding a
To implement a factory, subclass
QQmlNetworkAccessManagerFactory and implement the virtual
create() method, then assign it to the relevant QML engine using
setNetworkAccessManagerFactory() . For instance, the
QNetworkAccessManager objects created by the following snippet will cache requests.
class CachingNetworkAccessManagerFactory(QQmlNetworkAccessManagerFactory): # public QNetworkAccessManager create(QObject parent) override networkAccessManager = QNetworkAccessManager(parent) diskCache = QNetworkDiskCache(parent) diskCache.setCacheDirectory("requestCache") networkAccessManager.setCache(diskCache) return networkAccessManager
The factory can then be passed to the QML engine so it can instantiate the
QNetworkAccessManager with the custom behavior.
networkManagerFactory = CachingNetworkAccessManagerFactory() engine.setNetworkAccessManagerFactory(networkManagerFactory)
Note the QML engine may create
QNetworkAccessManager instances from multiple threads. Because of this, the implementation of the
create() method must be
reentrant . In addition, the developer should be careful if the signals of the object to be returned from
create() are connected to the slots of an object that may be created in a different thread:
The QML engine internally handles all requests, and cleans up any
QNetworkReplyobjects it creates. Receiving the
finished()signal in another thread may not provide the receiver with a valid reply object if it has already been deleted.
Authentication details provided to
authenticationRequired()must be provided immediately, so this signal cannot be connected as a
QueuedConnection(or as the default
AutoConnectionfrom another thread).
For more information about signals and threads, see Threads and QObjects and Signals and Slots Across Threads .
- class PySide6.QtQml.QQmlNetworkAccessManagerFactory#
- abstract PySide6.QtQml.QQmlNetworkAccessManagerFactory.create(parent)#
Creates and returns a network access manager with the specified
parent. This method must return a new
QNetworkAccessManager instance each time it is called.
Note: this method may be called by multiple threads, so ensure the implementation of this method is reentrant.