本页内容

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依然有效。

该示例实现了自己的精简版 HTTP 服务器,因此构建时无需依赖Qt HTTP Server 模块。在实际应用中,您应改用 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.