The PySide.QtDeclarative.QDeclarativeNetworkAccessManagerFactory class creates PySide.QtNetwork.QNetworkAccessManager instances for a QML engine.
A QML engine uses PySide.QtNetwork.QNetworkAccessManager for all network access. By implementing a factory, it is possible to provide the QML engine with custom PySide.QtNetwork.QNetworkAccessManager instances with specialized caching, proxy and cookies support.
To implement a factory, subclass PySide.QtDeclarative.QDeclarativeNetworkAccessManagerFactory and implement the virtual PySide.QtDeclarative.QDeclarativeNetworkAccessManagerFactory.create() method, then assign it to the relevant QML engine using QDeclarativeEngine.setNetworkAccessManagerFactory() .
Note the QML engine may create PySide.QtNetwork.QNetworkAccessManager instances from multiple threads. Because of this, the implementation of the PySide.QtDeclarative.QDeclarativeNetworkAccessManagerFactory.create() method must be reentrant . In addition, the developer should be careful if the signals of the object to be returned from PySide.QtDeclarative.QDeclarativeNetworkAccessManagerFactory.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 PySide.QtNetwork.QNetworkReply objects it creates. Receiving the QNetworkAccessManager.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 QNetworkAccessManager.authenticationRequired() must be provided immediately, so this signal cannot be connected as a Qt.QueuedConnection (or as the default Qt.AutoConnection from another thread).
For more information about signals and threads, see Threads and QObjects and Signals and Slots Across Threads .
See also
NetworkAccessManagerFactory example
Parameters: | parent – PySide.QtCore.QObject |
---|---|
Return type: | PySide.QtNetwork.QNetworkAccessManager |
Creates and returns a network access manager with the specified parent . This method must return a new PySide.QtNetwork.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.