Sur cette page

Les changements apportés à Qt Network

Qt 6 est le résultat d'un effort conscient pour rendre le framework plus efficace et plus facile à utiliser.

Nous essayons de maintenir la compatibilité binaire et source pour toutes les API publiques dans chaque version. Mais certains changements étaient inévitables dans un effort pour faire de Qt un meilleur framework.

Dans cette rubrique, nous résumons ces changements dans Qt Network, et fournissons des conseils pour les gérer.

Changements dans les API

Surcharges de noms ambigus

Plusieurs fonctions surchargées ambiguës ont été supprimées. Le signal error() est remplacé par errorOccurred() dans QAbstractSocket et ses héritiers (QTcpSocket, QUdpSocket, QLocalSocket, et QSslSocket), et dans QNetworkReply. Le code tel que :

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

doit donc être remplacé par :

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

Dans QSslSocket, la fonction qui renvoie une liste d'erreurs rencontrées au cours de la poignée de main TLS :

QList<QSslError> sslErrors() const;

est renommée sslHandshakeErrors() :

const auto tlsErrors = socket.sslHandshakeErrors();

La gestion des porteurs est supprimée

Les classes QNetworkConfiguration et QNetworkConfigurationManager sont supprimées dans Qt 6. Par conséquent, les fonctions membres suivantes de QNetworkAccessManager sont également supprimées :

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

QNetworkInformationQNetworkConfiguration, initialement introduite dans Qt 6.1, vise à remplacer certains aspects de l'API de gestion des supports. Elle fournit une API unifiée qui s'abonne aux changements du réseau notifiés par le système d'exploitation.

QNetworkInformation::reachability(), introduite dans Qt 6.1, remplace la fonction QNetworkAccessManager::networkAccessible(), tout en ajoutant des informations plus détaillées sur la joignabilité du réseau. Voir sa documentation pour plus de détails.

Dans Qt 6.2, QNetworkInformation a acquis la capacité de détecter les portails captifs.

Dans Qt 6.3 QNetworkInformation a gagné QNetworkInformation::transportMedium() et QNetworkInformation::isMetered().

Énumérateurs supprimés

Plusieurs énumérateurs ont été supprimés dans QtNetwork. Cela inclut des constantes pour des protocoles et des fonctionnalités qui ne sont plus supportés :

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

et les énumérateurs dont les noms ne respectent pas les conventions de dénomination :

QNetworkRequest::FollowRedirectsAttribute est supprimé dans Qt 6, voir la section sur la gestion des redirections ci-dessous.

Configuration de QSslSocket

Les fonctions dépréciées suivantes sont supprimées dans 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();

Utilisez QSslConfiguration et ses fonctions membres pour définir ces paramètres, par exemple :

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

Changements dans le comportement par défaut de QNetworkAccessManager

Politiques de redirection

Dans Qt 6, la politique de redirection par défaut est passée de manuelle à QNetworkRequest::NoLessSafeRedirectPolicy. Si votre application s'appuie sur une gestion manuelle des redirections (elle connecte son slot au signal QNetworkReply::redirected ), vous devez explicitement définir cette politique lors de la création d'une requête :

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

HTTP/2 est activé par défaut

Dans Qt 6, QNetworkAccessManager active le protocole HTTP/2 par défaut. Selon le schéma ("https" ou "http"), QNetworkAccessManager utilisera l'extension TLS "Application Layer Protocol Negotiation" ou l'en-tête HTTP "protocol upgrade" pour négocier HTTP/2. Si HTTP/2 ne peut être négocié, le gestionnaire d'accès reviendra à l'utilisation de HTTP/1.1. Si votre application ne peut utiliser que HTTP/1.1, vous devez désactiver HTTP/2 manuellement lors d'une nouvelle demande :

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

QNetworkAccessManager se prémunit désormais contre les bombes d'archive

À partir de Qt 6.2, QNetworkAccessManager se prémunit contre les fichiers compressés qui se décompressent en fichiers beaucoup plus grands que leur forme compressée en annulant la réponse si le taux de décompression dépasse un certain seuil. Cette vérification n'est appliquée qu'aux fichiers dépassant une certaine taille, qui peut être personnalisée (ou désactivée en passant -1) en appelant 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.