Auf dieser Seite

Änderungen an Qt Network

Qt 6 sind das Ergebnis bewusster Bemühungen, das Framework effizienter und benutzerfreundlicher zu gestalten.

Wir bemühen uns, bei jeder Veröffentlichung die Binär- und Quellkompatibilität für alle öffentlichen APIs aufrechtzuerhalten. Einige Änderungen waren jedoch unvermeidlich, um Qt zu einem besseren Framework zu machen.

In diesem Thema fassen wir diese Änderungen in „ Qt Network “ zusammen und geben Hinweise zu deren Handhabung.

API-Änderungen

Mehrdeutige Namensüberladungen

Mehrere mehrdeutige überladene Funktionen wurden entfernt. Das Signal `error()` wird in ` QAbstractSocket ` und dessen Nachfolgern (QTcpSocket, QUdpSocket, QLocalSocket und QSslSocket) sowie in ` QNetworkReply` durch `errorOccurred()` ersetzt. Code wie:

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

muss daher wie folgt geändert werden:

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

In „ QSslSocket “ wird die Funktion, die eine Liste der während des TLS-Handshakes aufgetretenen Fehler zurückgibt:

QList<QSslError> sslErrors() const;

wird in sslHandshakeErrors() umbenannt:

const auto tlsErrors = socket.sslHandshakeErrors();

Die Bearer-Verwaltung wird entfernt

Die Klassen `QNetworkConfiguration` und `QNetworkConfigurationManager` werden in Qt 6 entfernt. Folglich werden auch die folgenden Mitgliedsfunktionen von ` QNetworkAccessManager ` entfernt:

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

QNetworkInformation, ursprünglich in Qt 6.1 eingeführt, soll einige Aspekte der Bearer-Management-API ersetzen. Es stellt eine einheitliche API bereit, die Änderungen am Netzwerk abfragt, wie sie vom Betriebssystem gemeldet werden.

QNetworkInformation::reachability(), eingeführt in Qt 6.1, ersetzt die Funktion `QNetworkAccessManager::networkAccessible()` und liefert gleichzeitig detailliertere Informationen zur Erreichbarkeit des Netzwerks. Weitere Details finden Sie in der Dokumentation.

In Qt 6.2 wurde „ QNetworkInformation “ um die Fähigkeit erweitert, Captive-Portale zu erkennen.

In Qt 6.3 wurde „ QNetworkInformation “ um die Methoden „ QNetworkInformation::transportMedium()“ und „ QNetworkInformation::isMetered()“ erweitert.

Entfernte Enumeratoren

In „ QtNetwork “ wurden mehrere Enumeratoren entfernt. Dazu gehören Konstanten für nicht mehr unterstützte Protokolle und Funktionen:

  • QSsl::SslV2;
  • QSsl::SslV3;
  • QSsl::TlsV1SslV3;
  • QNetworkRequest::SpdyAllowedAttribute;
  • QNetworkRequest::SpdyWasUsedAttribute;
  • QNetworkAccessManager::Unbekannte Zugänglichkeit;
  • QNetworkAccessManager::Nicht zugänglich;
  • QNetworkAccessManager::Zugänglich

sowie Enumeratoren, deren Namen nicht den korrekten Namenskonventionen entsprachen:

QNetworkRequest::FollowRedirectsAttribute wurde in Qt 6 entfernt, siehe den Abschnitt über die Behandlung von Weiterleitungen weiter unten.

Konfiguration von QSslSocket

Die folgenden veralteten Funktionen wurden in Qt 6 entfernt:

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();

Verwenden Sie ` QSslConfiguration ` und dessen Mitgliedsfunktionen, um diese Parameter festzulegen, z. B.:

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

Änderungen am Standardverhalten von QNetworkAccessManager

Weiterleitungsrichtlinien

In Qt 6 hat sich die Standard-Umleitungsrichtlinie von „manuell“ zu „ QNetworkRequest::NoLessSafeRedirectPolicy “ geändert. Wenn Ihre Anwendung auf die manuelle Umleitungsverarbeitung angewiesen ist (sie verbindet ihren Slot mit dem Signal „ QNetworkReply::redirected “), müssen Sie diese Richtlinie beim Erstellen einer Anfrage explizit festlegen:

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

HTTP/2 ist standardmäßig aktiviert

In Qt 6 aktiviert „ QNetworkAccessManager “ standardmäßig das HTTP/2-Protokoll. Je nach Schema („https“ oder „http“) verwendet „ QNetworkAccessManager “ die TLS-Erweiterung „Application Layer Protocol Negotiation“ oder den HTTP-Header „protocol upgrade“, um HTTP/2 auszuhandeln. Wenn HTTP/2 nicht ausgehandelt werden kann, greift der Zugriffsmanager auf HTTP/1.1 zurück. Wenn Ihre Anwendung nur HTTP/1.1 verwenden kann, müssen Sie HTTP/2 bei einer neuen Anfrage manuell deaktivieren:

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

QNetworkAccessManager schützt nun vor Archiv-Bomben

Ab Qt 6.2 schützt „ QNetworkAccessManager “ vor komprimierten Dateien, die sich beim Entpacken in Dateien umwandeln, die wesentlich größer sind als ihre komprimierte Form, indem die Antwort mit einem Fehler zurückgegeben wird, wenn das Entpackungsverhältnis einen bestimmten Schwellenwert überschreitet. Diese Prüfung wird nur auf Dateien angewendet, die größer als eine bestimmte Größe sind; diese Größe kann durch den Aufruf von „ QNetworkRequest::setDecompressedSafetyCheckThreshold()“ angepasst (oder durch Übergabe von -1 deaktiviert) werden.

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