Qt WebChannel基础
Qt WebChannel允许服务器(QML/ c++应用程序)和客户端(HTML/JavaScript或QML应用程序)之间的点对点通信。它由Qt WebEngine提供了开箱即用的支持。此外,它可以在所有支持WebSockets的浏览器上工作,使Qt WebChannel客户端能够运行在任何JavaScript环境中(包括QML)。这需要基于Qt WebSockets的自定义传输实现。该模块提供了一个JavaScript库,用于将c++和QML应用程序与HTML/JavaScript和QML客户端无缝集成。客户端必须使用JavaScript库来访问由主机应用程序发布的序列化的QObjects。
使用简介
首先,需要引入相应的头文件,
#include <QtWebChannel/QtWebChannel>
并在.pro文件中添加模块:
QT += webchannel
官方示例
Qt WebChannel ChatClient HTML Example: 一个通过WebSocket与QWebChannel服务器通信的HTML/JavaScript客户端。
Qt WebChannel ChatServer Example: 一个简单的聊天服务器,使用QWebChannel c++ API实现。
Qt WebChannel Standalone Example: 一个在浏览器中运行的服务器和远程客户端之间的简单聊天软件。
使用步骤
- 从QObject派生子类
- 使用QWebChannel注册(registerObject)该类
- 在Html文件中可以使用该类相关方法和变量
<script src="qwebchannel.js"></script>
<script type="text/javascript">
new QWebChannel(qt.webChannelTransport,
function(channel){
var webobj = channel.objects.webobj;
window.foo= webobj;
webobj.jscallme();
});
</script>