このページについて

Qt WebChannel スタンドアロン例

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

接続ログの出力が表示されたターミナルの上に、やり取りされたpingおよびpongメッセージを一覧表示するダイアログウィンドウがあり、そこには入力フィールドと「送信」ボタンが配置されている

「スタンドアロン」では、QWebChannel のC++ APIを使用して外部クライアントと通信する方法を示しています。これは、C++アプリケーションと、デフォルトのブラウザで実行されているリモートHTMLクライアントとの間のシンプルなチャットです。

例の動作確認

以下の手順でサンプルを実行できます:

リモートクライアントとの通信

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を使用することになります。

サンプルプロジェクト @ code.qt.io

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