Sur cette page

Modifications apportées à Qt Network

Qt 6 résultent d’un effort délibéré visant à rendre le framework plus efficace et plus facile à utiliser.

Nous nous efforçons de maintenir la compatibilité binaire et source pour toutes les API publiques à chaque version. Cependant, certaines modifications étaient inévitables afin d’améliorer le framework Qt.

Dans cette rubrique, nous résumons ces modifications dans Qt Network et fournissons des conseils pour les prendre en compte.

Modifications des API

Surcharges de noms ambiguës

Plusieurs fonctions surchargées ambiguës ont été supprimées. Le signal `error()` est remplacé par `errorOccurred()` dans ` QAbstractSocket ` et ses dérivés ( `QTcpSocket`, ` QUdpSocket`, ` QLocalSocket` et ` QSslSocket`), ainsi que dans ` QNetworkReply`. Un 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 des erreurs rencontrées lors de la négociation 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();

QNetworkInformation, initialement introduite dans Qt 6.1, vise à remplacer certains aspects de l’API de gestion des supports de communication. Elle fournit une API unifiée qui s’abonne aux changements sur le réseau tels que 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 l'accessibilité du réseau. Consultez sa documentation pour plus de détails.

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

Dans Qt 6.3, ` QNetworkInformation ` a été enrichi des méthodes ` QNetworkInformation::transportMedium()` et ` QNetworkInformation::isMetered()`.

Énumérateurs supprimés

Plusieurs énumérateurs ont été supprimés dans QtNetwork. Cela inclut les constantes correspondant à des protocoles et fonctionnalités qui ne sont plus pris en charge :

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

et des énumérateurs dont les noms ne respectaient pas les conventions de nommage appropriées :

QNetworkRequest::FollowRedirectsAttribute a été supprimé dans Qt 6 ; voir la section ci-dessous consacrée à la gestion des redirections.

Configuration de QSslSocket

Les fonctions obsolètes 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);

Modifications du 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 repose sur une gestion manuelle des redirections (elle connecte son slot au signal « QNetworkReply::redirected »), vous devez définir explicitement 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. En fonction du 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 la négociation HTTP/2 échoue, le gestionnaire d’accès reviendra à HTTP/1.1. Si votre application ne peut utiliser que HTTP/1.1, vous devez désactiver HTTP/2 manuellement lors d’une nouvelle requête :

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

QNetworkAccessManager protège désormais contre les « archive bombs »

À partir de Qt 6.2, ` QNetworkAccessManager ` se protège contre les fichiers compressés qui, une fois décompressés, donnent lieu à des fichiers bien plus volumineux que leur forme compressée, en renvoyant une erreur si le taux de décompression dépasse un certain seuil. Cette vérification ne s’applique 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.