QQmlNetworkAccessManagerFactory Class
La clase QQmlNetworkAccessManagerFactory crea instancias de QNetworkAccessManager para un motor QML. Más...
| Cabecera: | #include <QQmlNetworkAccessManagerFactory> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml)target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
Funciones públicas
| virtual | ~QQmlNetworkAccessManagerFactory() |
| virtual QNetworkAccessManager * | create(QObject *parent) = 0 |
Descripción detallada
Un motor QML utiliza QNetworkAccessManager para todos los accesos de red. Mediante la implementación de una fábrica, es posible proporcionar al motor QML instancias personalizadas de QNetworkAccessManager con soporte especializado de caché, proxy y cookies.
- QNetworkDiskCache puede utilizarse como caché de peticiones con QNetworkDiskCache.
- Con QNetworkProxy, el tráfico enviado por QNetworkAccessManager puede canalizarse a través de un proxy.
- Las cookies pueden guardarse para futuras peticiones añadiendo QNetworkCookieJar.
Para implementar una fábrica, subclase QQmlNetworkAccessManagerFactory e implemente el método virtual create(), luego asígnelo al motor QML relevante usando QQmlEngine::setNetworkAccessManagerFactory(). Por ejemplo, los objetos QNetworkAccessManager creados por el siguiente fragmento almacenarán en caché las solicitudes.
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; } };
A continuación, la fábrica puede pasarse al motor QML para que pueda instanciar el QNetworkAccessManager con el comportamiento personalizado.
CachingNetworkAccessManagerFactory networkManagerFactory; engine->setNetworkAccessManagerFactory(&networkManagerFactory);
Tenga en cuenta que el motor QML puede crear instancias de QNetworkAccessManager desde varios subprocesos. Por ello, la implementación del método create() debe ser reentrant. Además, el desarrollador debe tener cuidado si las señales del objeto que se devolverán de create() están conectadas a las ranuras de un objeto que puede crearse en un hilo diferente:
- El motor QML gestiona internamente todas las peticiones y limpia los objetos QNetworkReply que crea. La recepción de la señal QNetworkAccessManager::finished() en otro hilo puede no proporcionar al receptor un objeto de respuesta válido si ya se ha eliminado.
- Los detalles de autenticación proporcionados a QNetworkAccessManager::authenticationRequired() deben proporcionarse inmediatamente, por lo que esta señal no puede conectarse como Qt::QueuedConnection (o como Qt::AutoConnection por defecto desde otro hilo).
Para más información sobre señales e hilos, ver Hilos y QObjects y Señales y ranuras entre hilos.
Ver también QNetworkDiskCache.
Documentación de la Función Miembro
[virtual noexcept] QQmlNetworkAccessManagerFactory::~QQmlNetworkAccessManagerFactory()
Destruye la fábrica. La implementación por defecto no hace nada.
[pure virtual] QNetworkAccessManager *QQmlNetworkAccessManagerFactory::create(QObject *parent)
Crea y devuelve un gestor de acceso a la red con la dirección parent especificada. Este método debe devolver una nueva instancia de QNetworkAccessManager cada vez que se llame.
Nota: este método puede ser llamado por múltiples hilos, así que asegúrate de que la implementación de este método es reentrante.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.