Qt WebChannel スタンドアロン例
サーバーと、ブラウザ上で動作するリモートクライアントとの間のシンプルなチャットです。

「スタンドアロン」では、QWebChannel のC++ APIを使用して外部クライアントと通信する方法を示しています。これは、C++アプリケーションと、デフォルトのブラウザで実行されているリモートHTMLクライアントとの間のシンプルなチャットです。
例の動作確認
以下の手順でサンプルを実行できます:
- Qt Creator
Welcome モードを開き、Examples からこのサンプルを選択してください。詳細については、Qt Creator の「チュートリアル:ビルドと実行」を参照してください。
- Qt Extension for Visual Studio Code
Command Palette から `Qt: Open Qt examples ` コマンドを実行し、リストからこの例を選択します。詳細については、Qt Extension for Visual Studio Code の「チュートリアル: ビルドと実行」を参照してください。
リモートクライアントとの通信
C++アプリケーションは、QWebChannel インスタンスを設定し、その上でCore オブジェクトを公開します。リモートクライアント側では、index.html がデフォルトのブラウザで実行されます。双方に、受信したメッセージのリストと、相手側にメッセージを送信するための入力ボックスが表示されたダイアログが表示されます。
ユーザーがメッセージを送信すると、Core はCore::sendText() シグナルを発行します。このシグナルは自動的にHTMLクライアントに伝播されます。ユーザーがHTML側でメッセージを入力すると、Core::receiveText() が呼び出されます。
HTMLクライアントとC++サーバー間のすべての通信は、WebSocketを介して行われます。C++側はQWebSocketServer をインスタンス化し、着信するQWebSocket 接続をQWebChannelAbstractTransport オブジェクトでラップします。その後、これらのオブジェクトはQWebChannel インスタンスに接続されます。
クライアントページの提供
index.html ページと、そこで読み込まれるqwebchannel.js スクリプトは、Qtリソースとしてアプリケーションにコンパイルされます。アプリケーションは、最小限のループバックHTTPサーバーを介してこれらを提供し、生成されたhttp:// URLでデフォルトのブラウザを開きます。ループバックURLは、サンドボックス化されたプラットフォームやクロスコンパイルされたプラットフォームのように、ブラウザとアプリケーションがファイルシステムを共有していない場合でも機能します。
このサンプルでは、ビルドにQt HTTP Server モジュールを必要としないよう、独自の最小限のHTTPサーバーを実装しています。実際のアプリケーションでは、代わりにQHttpServerを使用することになります。
「Qt WebChannel JavaScript API」も参照してください 。
© 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.