The QQmlNetworkAccessManagerFactory class creates QNetworkAccessManager instances for a QML engine. 更多...
头: | #include <QQmlNetworkAccessManagerFactory> |
CMake: |
find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake: | QT += qml |
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 (). For instance, the QNetworkAccessManager objects created by the following snippet will cache requests.
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; } };
The factory can then be passed to the QML engine so it can instantiate the QNetworkAccessManager with the custom behavior.
CachingNetworkAccessManagerFactory networkManagerFactory; 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 可重入 . 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:
For more information about signals and threads, see 线程和 QObject and 信号和槽跨线程 .
另请参阅 QNetworkDiskCache .
[虚拟]
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.