QQmlNetworkAccessManagerFactory Class

The QQmlNetworkAccessManagerFactory class creates QNetworkAccessManager instances for a QML engine. 更多...

头: #include <QQmlNetworkAccessManagerFactory>
qmake: QT += qml
Since: Qt 5.0

该类在 Qt 5.0 引入。

公共函数

virtual ~QQmlNetworkAccessManagerFactory ()
virtual QNetworkAccessManager * create (QObject * parent ) = 0

详细描述

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.

To implement a factory, subclass QQmlNetworkAccessManagerFactory and implement the virtual create () method, then assign it to the relevant QML engine using QQmlEngine::setNetworkAccessManagerFactory ().

Note the QML engine may create QNetworkAccessManager instances from multiple threads. Because of this, the implementation of the create () method must be 可重入 . 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 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 线程和 QObject and 信号和槽跨线程 .

另请参阅 Network Access Manager Factory Example .

成员函数文档编制

[virtual] QQmlNetworkAccessManagerFactory:: ~QQmlNetworkAccessManagerFactory ()

Destroys the factory. The default implementation does nothing.

[pure virtual] QNetworkAccessManager *QQmlNetworkAccessManagerFactory:: create ( QObject * 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.