Qt 前后端通信(QWebChannel Js / C++ 互操作):原理、示例、步骤解说
Qt 提供的 QWebEngineView 是一个基于 Chromium 内核的浏览器组件,通过它,开发者可以使用 HTML、CSS、JavaScript 等技术开发 Web 页面并呈现在 Qt 桌面应用中,但与开发纯 Web 页面不同的是,这些页面通常需要和 应用中的其他组件交互,例如获取后端数据进行渲染、将前端用户指令传达给后端执行等,这将不可避免地涉及到前端 Js 和 后端 C++ 之间的交互问题,而 Qt 为此给出的解决方案就是 QWebChannel,通过 QWebChannel 前端 Web 页面和与后端 C++ 程序实现自然而顺畅的交互,甚至前后端的操作风格都极为一致。本文我们将细致地介绍QWebChannel 前后端交互的原理,通过四个详实的示例程序讲解每一步重要的操作步骤,通过本文,你将对 QWebChannel 有一个全面而深入的了解。
1. 工作原理
QWebChannel 的工作原理并不复杂,官方文档只用了很少的文字来解释:QWebChannel 填补了 C++ 应用程序与 HTML/JavaScript 应用程序之间的空白。通过将 一个 QObject 派生对象发布到 QWebChannel,并在 HTML 端使用 qwebchannel.js,就可以透明地访问QObject 的属性、信号和槽方法。无需手动传递消息和序列化数据,C++ 端的属性更新和信号发射会自动传输到可能远程运行的 HTML 客户端。这里,我用更通俗易懂的方式重新描述一下: