このページでは

変更点Qt Network

Qt 6 における変更点は、フレームワークをより効率的で使いやすくするための意図的な取り組みの結果です。

各リリースにおいて、すべての公開 API についてバイナリおよびソースの互換性を維持するよう努めています。しかし、Qt をより優れたフレームワークにするためには、一部の変更は避けられませんでした。

このトピックでは、Qt Network におけるそれらの変更点をまとめ、それらに対処するためのガイダンスを提供します。

API の変更

曖昧な名前のオーバーロード

曖昧なオーバーロード関数がいくつか削除されました。QAbstractSocket およびその派生クラス(QTcpSocket 、QUdpSocket 、QLocalSocket 、QSslSocket )、ならびにQNetworkReply において、error()シグナルはerrorOccurred()に置き換えられました。以下のようなコードは:

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

は、したがって次のように変更する必要があります:

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

QSslSocket にある、TLSハンドシェイク中に発生したエラーのリストを返す関数:

QList<QSslError> sslErrors() const;

は sslHandshakeErrors() に名称が変更されました:

const auto tlsErrors = socket.sslHandshakeErrors();

ベアラー管理が削除されました

Qt 6 では、QNetworkConfiguration および QNetworkConfigurationManager クラスが削除されました。その結果、QNetworkAccessManager の以下のメンバ関数も削除されました:

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

QNetworkInformationは、当初 Qt 6.1 で導入され、ベアラー管理 API の一部の機能を置き換えることを目的としています。これは、オペレーティングシステムから通知されるネットワークの変更を購読する統一された API を提供することで機能します。

QNetworkInformation::reachability()はQt 6.1で導入され、QNetworkAccessManager::networkAccessible()関数を置き換えるとともに、ネットワークの到達可能性に関するより詳細な情報を追加します。詳細については、そのドキュメントを参照してください。

Qt 6.2 では、QNetworkInformation にキャプティブポータルを検出する機能が追加されました。

Qt 6.3では、QNetworkInformation にQNetworkInformation::transportMedium()およびQNetworkInformation::isMetered()が追加されました。

削除された列挙子

QtNetwork では、いくつかの列挙型が削除されました。これには、サポートされなくなったプロトコルや機能に関する定数が含まれます:

  • QSsl::SslV2;
  • QSsl::SslV3;
  • QSsl::TlsV1SslV3;
  • QNetworkRequest::SpdyAllowedAttribute;
  • QNetworkRequest::SpdyWasUsedAttribute;
  • QNetworkAccessManager::UnknownAccessibility;
  • QNetworkAccessManager::アクセス不可;
  • QNetworkAccessManager::Accessible

および、適切な命名規則に従っていない名前の列挙子:

QNetworkRequest::FollowRedirectsAttribute は Qt 6 で削除されました。リダイレクトの処理に関する以下のセクションを参照してください。

QSslSocket の設定

以下の非推奨関数は 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();

これらのパラメータを設定するには、QSslConfiguration およびそのメンバ関数を使用してください。例:

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

QNetworkAccessManager のデフォルト動作の変更

リダイレクトポリシー

Qt 6 では、デフォルトのリダイレクトポリシーが「手動」から `QNetworkRequest::NoLessSafeRedirectPolicy` に変更されました。アプリケーションが手動によるリダイレクト処理に依存している場合(スロットを `QNetworkReply::redirected ` シグナルに接続している場合など)、リクエストを作成する際にこのポリシーを明示的に設定する必要があります:

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

HTTP/2はデフォルトで有効

Qt 6 では、QNetworkAccessManager がデフォルトで HTTP/2 プロトコルを有効にします。スキーム(「https」または「http」)に応じて、QNetworkAccessManager は、アプリケーション層プロトコルネゴシエーション(ALPN)TLS 拡張機能、または「protocol upgrade」HTTP ヘッダーを使用して HTTP/2 をネゴシエーションします。 HTTP/2のネゴシエーションができない場合、アクセスマネージャはHTTP/1.1の使用に切り替わります。アプリケーションがHTTP/1.1しか使用できない場合は、新しいリクエストに対して手動でHTTP/2を無効にする必要があります:

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

QNetworkAccessManager がアーカイブ爆弾に対する保護機能を追加

Qt 6.2以降、QNetworkAccessManager は、解凍時に圧縮形式よりもはるかに大きなファイルになる圧縮ファイルに対して、解凍率が特定の閾値を超えた場合にレスポンスをエラーとして返すことで保護を行います。このチェックは、特定のサイズを超えるファイルにのみ適用され、QNetworkRequest::setDecompressedSafetyCheckThreshold()を呼び出すことで、このサイズをカスタマイズ(または-1を指定して無効化)できます。

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