En esta página

Los cambios introducidos en Qt Network

Qt 6 son el resultado del esfuerzo consciente por hacer el framework más eficiente y fácil de usar.

Intentamos mantener la compatibilidad binaria y de código fuente de todas las API públicas en cada versión. Pero algunos cambios eran inevitables en un esfuerzo por hacer de Qt un framework mejor.

En este tema resumimos esos cambios en Qt Network, y proporcionamos una guía para manejarlos.

Cambios en la API

Sobrecarga de nombres ambiguos

Se eliminan varias funciones sobrecargadas ambiguas. La señal error() se sustituye por errorOccurred() en QAbstractSocket y sus herederos (QTcpSocket, QUdpSocket, QLocalSocket, y QSslSocket), y en QNetworkReply. Código como:

connect(socket, qOverload<QAbstractSocket::SocketError>(&QAbstractSocket::error),
        this, &SomeClass::errorSlot);

debe por tanto cambiarse por:

connect(socket, &QAbstractSocket::errorOccurred, this, &SomeClass::errorSlot);

En QSslSocket, la función que devuelve una lista de errores encontrados durante el handshake TLS:

QList<QSslError> sslErrors() const;

pasa a llamarse sslHandshakeErrors():

const auto tlsErrors = socket.sslHandshakeErrors();

Se elimina la gestión de portadores

En Qt 6 se eliminan las clases QNetworkConfiguration y QNetworkConfigurationManager. En consecuencia, también se eliminan las siguientes funciones miembro de QNetworkAccessManager:

void setConfiguration(const QNetworkConfiguration &config);
QNetworkConfiguration configuration() const;
QNetworkConfiguration activeConfiguration() const;
void setNetworkAccessible(NetworkAccessibility accessible);
NetworkAccessibility networkAccessible() const;
void networkSessionConnected();

QNetworkInformationQNetworkConfigurationManager, introducido inicialmente en Qt 6.1, pretende sustituir algunos aspectos de la API de gestión de portadores. Funciona proporcionando una API unificada que se suscribe a los cambios en la red notificados por el sistema operativo.

QNetworkInformation::reachabilityLa función QNetworkAccessManager::networkAccessible(), introducida en Qt 6.1, sustituye a la función QNetworkAccessManager::networkAccessible(), añadiendo información más detallada sobre la accesibilidad de la red. Ver su documentación para más detalles.

En Qt 6.2 QNetworkInformation adquirió la capacidad de detectar portales cautivos.

En Qt 6.3 QNetworkInformation obtuvo QNetworkInformation::transportMedium() y QNetworkInformation::isMetered().

Enumeradores eliminados

Se han eliminado varios enumeradores en QtNetwork. Esto incluye constantes para protocolos y funcionalidades que ya no se soportan:

  • QSsl::SslV2;
  • QSsl::SslV3;
  • QSsl::TlsV1SslV3;
  • QNetworkRequest::SpdyAllowedAttribute;
  • QNetworkRequest::SpdyWasUsedAttribute;
  • QNetworkAccessManager::UnknownAccessibility;
  • QNetworkAccessManager::NotAccessible;
  • QNetworkAccessManager::Accesible

y enumeradores cuyos nombres no seguían las convenciones de nomenclatura adecuadas:

QNetworkRequest::FollowRedirectsAttribute es eliminado en Qt 6, ver la sección sobre manejo de redirecciones más abajo.

Configurando QSslSocket

Las siguientes funciones obsoletas se eliminan en Qt 6:

QList<QSslCipher> ciphers() const;
void setCiphers(const QList<QSslCipher> &ciphers);
void setCiphers(const QString &ciphers);
static void setDefaultCiphers(const QList<QSslCipher> &ciphers);
static QList<QSslCipher> defaultCiphers();
static QList<QSslCipher> supportedCiphers();
QList<QSslCipher> ciphers() const;
void setCiphers(const QList<QSslCipher> &ciphers);
void setCiphers(const QString &ciphers);
static void setDefaultCiphers(const QList<QSslCipher> &ciphers);
static QList<QSslCipher> defaultCiphers();
static QList<QSslCipher> supportedCiphers();
bool addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem,
                       QRegExp::PatternSyntax syntax = QRegExp::FixedString);
void addCaCertificate(const QSslCertificate &certificate);
void addCaCertificates(const QList<QSslCertificate> &certificates);
void setCaCertificates(const QList<QSslCertificate> &certificates);
QList<QSslCertificate> caCertificates() const;
static bool addDefaultCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem,
                                     QRegExp::PatternSyntax syntax = QRegExp::FixedString);
static void addDefaultCaCertificate(const QSslCertificate &certificate);
static void addDefaultCaCertificates(const QList<QSslCertificate> &certificates);
static void setDefaultCaCertificates(const QList<QSslCertificate> &certificates);
static QList<QSslCertificate> defaultCaCertificates();
static QList<QSslCertificate> systemCaCertificates();

Use QSslConfiguration y sus funciones miembro para configurar estos parámetros, por ejemplo:

auto sslConfiguration = QSslConfiguration::defaultConfiguration();
sslConfiguration.setCiphers("ECDHE-ECDSA-AES256-SHA384");
// Set other parameters here ...
socket.setSslConfiguration(sslConfiguration);

Cambios en el comportamiento por defecto de QNetworkAccessManager

Políticas de redirección

En Qt 6, la política de redirección por defecto ha cambiado de manual a QNetworkRequest::NoLessSafeRedirectPolicy. Si su aplicación confía en el manejo manual de la redirección (conecta su ranura a la señal QNetworkReply::redirected ), tiene que establecer explícitamente esta política al crear una petición:

request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::ManualRedirectPolicy);

HTTP/2 está activado por defecto

En Qt 6 QNetworkAccessManager se habilita el protocolo HTTP/2 por defecto. Dependiendo del esquema ("https" o "http"), QNetworkAccessManager utilizará la extensión TLS de negociación de protocolo de capa de aplicación o la cabecera HTTP "actualización de protocolo" para negociar HTTP/2. Si no se puede negociar HTTP/2, el gestor de acceso volverá a utilizar HTTP/1.1. Si su aplicación sólo puede utilizar HTTP/1.1, deberá desactivar HTTP/2 manualmente en una nueva petición:

request.setAttribute(QNetworkRequest::Http2AllowedAttribute, false);

QNetworkAccessManager ahora protege contra bombas de archivo

A partir de Qt 6.2 QNetworkAccessManager protegerá contra archivos comprimidos que se descomprimen a archivos que son mucho más grandes que su forma comprimida por error de la respuesta si la relación de descompresión supera un determinado umbral. Esta comprobación sólo se aplica a archivos mayores de un cierto tamaño, que puede personalizarse (o desactivarse pasando -1) llamando a QNetworkRequest::setDecompressedSafetyCheckThreshold().

© 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.