Detailed Description

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

class PySide.QtDeclarative.QDeclarativeNetworkAccessManagerFactory
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.