このページでは

QNetworkProxyFactory Class

QNetworkProxyFactory クラスは、きめ細かなプロキシの選択機能を提供します。詳細...

ヘッダー: #include <QNetworkProxyFactory>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

パブリック関数

QNetworkProxyFactory()
virtual ~QNetworkProxyFactory()
virtual QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery()) = 0

静的パブリックメンバー

QList<QNetworkProxy> proxyForQuery(const QNetworkProxyQuery &query)
void setApplicationProxyFactory(QNetworkProxyFactory *factory)
void setUseSystemConfiguration(bool enable)
QList<QNetworkProxy> systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery())
bool usesSystemConfiguration()

詳細な説明

QNetworkProxyFactory は、QNetworkProxy の拡張機能であり、アプリケーションが、プロキシを要求するソケットに応じて、使用するプロキシサーバーをよりきめ細かく制御できるようにします。これにより、アプリケーションは、たとえばプロトコルや宛先のホスト名に応じて、異なる設定を適用することができます。

QNetworkProxyFactory はアプリケーションに対してグローバルに設定することができ、その場合はQNetworkProxy::setApplicationProxy() で設定されたグローバルプロキシをすべて上書きします。グローバルに設定された場合、Qt で作成されるすべてのソケットは、使用するプロキシを決定するためにこのファクトリに問い合わせを行います。

また、QNetworkAccessManager など、複数の接続をサポートする特定のフレームワークでもファクトリを設定できます。そのようなオブジェクトに対して設定された場合、そのフレームワークによって作成されたソケットのみがファクトリに問い合わせを行います。

システムプロキシ

ファクトリを構成して、システムプロキシの設定を使用するようにすることができます。この動作を有効にするには、setUseSystemConfiguration() 関数を true で呼び出し、無効にするには false で呼び出します。

同様に、ファクトリのsystemProxyForQuery()関数を呼び出すことで、システムプロキシに対して直接クエリを実行することもできます。

警告: ユーザーのシステムの設定によっては 、特定のプラットフォームにおいてシステムプロキシ機能の使用に制限が課される場合があります。systemProxyForQuery() のドキュメントには、影響を受けるプラットフォームにおけるこれらの制限の一覧が記載されています。

メンバ関数のドキュメント

QNetworkProxyFactory::QNetworkProxyFactory()

QNetworkProxyFactory オブジェクトを作成します。

QNetworkProxyFactory は抽象クラスであるため、QNetworkProxyFactory 型のオブジェクトを直接作成することはできません。

[virtual noexcept] QNetworkProxyFactory::~QNetworkProxyFactory()

QNetworkProxyFactory オブジェクトを破棄します。

[static] QList<QNetworkProxy> QNetworkProxyFactory::proxyForQuery(const QNetworkProxyQuery &query)

この関数は、クエリリクエスト(query )を受け取り、ソケットまたはリクエストのタイプに関する詳細を検証した上で、使用するプロキシサーバーを示すQNetworkProxy オブジェクトのリストを、優先順位の高い順に返します。

[pure virtual] QList<QNetworkProxy> QNetworkProxyFactory::queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery())

この関数は、クエリリクエスト `query` を受け取り、ソケットまたはリクエストの種類の詳細を検証した上で、使用するプロキシサーバーを示す `QNetworkProxy ` オブジェクトのリストを、優先順位の高い順に返します。

このクラスを再実装する際は、少なくとも1つの要素を返すように注意してください。

より適切なプロキシの代替案を決定できない場合は、QNetworkProxy::DefaultProxy を使用してください。これにより、プロキシを照会するコードに対して、より上位の代替案を使用するよう指示します。たとえば、このファクトリがQNetworkAccessManager オブジェクトに設定されている場合、DefaultProxy はアプリケーションレベルのプロキシ設定を照会するよう指示します。

このファクトリがアプリケーション・プロキシ・ファクトリとして設定されている場合、DefaultProxy と NoProxy は同じ意味を持ちます。

[static] void QNetworkProxyFactory::setApplicationProxyFactory(QNetworkProxyFactory *factory)

アプリケーション全体のプロキシファクトリを `factory` に設定します。この関数はそのオブジェクトの所有権を取得し、必要に応じてそれを削除します。

アプリケーション全体のプロキシは、他のすべてのプロキシ選択リクエストが `QNetworkProxy::DefaultProxy` を返した場合の最終手段として使用されます。たとえば、`QTcpSocket ` オブジェクトには `QTcpSocket::setProxy` を使用してプロキシを設定できますが、何も設定されていない場合は、この関数で設定されたプロキシファクトリクラスが照会されます。

この関数でプロキシファクトリを設定すると、QNetworkProxy::setApplicationProxy で設定されたアプリケーションレベルのプロキシはすべて上書きされ、usesSystemConfiguration() はfalse を返すようになります。

QNetworkProxy::setApplicationProxy()、QAbstractSocket::proxy()、およびQAbstractSocket::setProxy()も参照してください 。

[static] void QNetworkProxyFactory::setUseSystemConfiguration(bool enable)

プラットフォーム固有のプロキシ設定のみを使用できるようにします。詳細については、systemProxyForQuery() を参照してください。

enable をtrue に設定してこの関数を呼び出すと、すでに設定されているプロキシやQNetworkProxyFactory がすべてリセットされます。

注: システムプロキシの使用に関連する制限事項の一覧については、systemProxyForQuery() のドキュメントを参照してください 。

[static] QList<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery())

この関数は、クエリリクエスト(query )を受け取り、ソケットまたはリクエストの種類の詳細を調査した上で、使用するプロキシサーバーを示すQNetworkProxy オブジェクトのリストを、優先順位の高い順に返します。

この関数は、プラットフォーム固有のプロキシ設定を判別するために使用できます。この関数は、OSが提供するライブラリが存在する場合、それらを使用して指定された接続のプロキシを判別します。ライブラリが存在しない場合、この関数は単に `QNetworkProxy::NoProxy` 型の `QNetworkProxy ` を返します。

Windows では、この関数は WinHTTP DLL 関数を使用します。その名称にもかかわらず、Microsoft はこの関数を HTTP だけでなく、ネットワーク接続を必要とするすべてのアプリケーションで使用することを推奨しています。この関数は、proxycfg.exe ツールを使用してレジストリに設定されたプロキシ設定を尊重します。それらの設定が見つからない場合、この関数は Internet Explorer の設定を取得して使用しようとします。

macOS では、この関数は Apple の CFNetwork フレームワークを使用してプロキシ設定を取得します。プロトコルタグに「ftp」、「http」、「https」を含むクエリに対して、それぞれ FTP、HTTP、HTTPS のプロキシ設定を適用します。 その設定で SOCKS プロキシが有効になっている場合、この関数はすべてのクエリに対して SOCKS サーバーを使用します。SOCKS が有効になっていない場合は、すべての TcpSocket および UrlRequest クエリに対して HTTPS プロキシを使用します。

libproxy サポートが設定されているシステムでは、この関数は libproxy を利用してプロキシ設定を取得します。libproxy の設定に応じて、デスクトップ設定や環境変数などに委譲される場合があります。

その他のシステムでは、この関数は「http_proxy」環境変数からプロキシ設定を取得します。この変数は、「http」、「socks5」、または「socks5h」のいずれかのスキームを使用した URL でなければなりません。

制限事項

これらは、この関数の現在のバージョンにおける制限事項です。将来の Qt バージョンでは、ここに挙げた制限事項の一部が解除される可能性があります。

  • Windowsプラットフォームでは、ユーザーのシステム設定によっては、この関数の実行に数秒かかる場合があります。

[static] bool QNetworkProxyFactory::usesSystemConfiguration()

プラットフォーム固有のプロキシ設定の使用が有効になっているかどうかを返します。

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