本文主要是介绍跟着例子学Qt--2.standalone( C++ QWebChannel server and a HTML/JS client),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
之前使用过QWebChannel来沟通html/js及c++代码,其中很多也不是很了解,当时的使用目的就是将网页内嵌展示,即相当于展示一个本地网页,并在其中暴露一些c++接口,不牵涉到socket的相关通讯。当时理解得很浅,如今恰巧看到Qt有一个关于QWebChannel的例子,代码量不大却几乎完美地阐述了其中的机制,遂细分析之。
概述
其实仔细看分析的Qt standalone示例和我当初使用的方式并不完全相同。standalone中并没有通过QWebEngineView展示网页,这个示例展示的是一个服务器端运用的方式,最后使用QDesktopServices::openUrl打开一个网页而已。
分析主要脉络
QWebSocketServer server(QStringLiteral("QWebChannel Standalone Example Server"), QWebSocketServer::NonSecureMode); if (!server.listen(QHostAddress::LocalHost, 12345)) {// 这里让服务器监听端口12345qFatal("Failed to open web socket server.");return 1;}// 后面需要改写这段WebSocketClientWrapper clientWrapper(&server);QWebChannel channel;QObject::connect(&clientWrapper, &WebSocketClientWrapper::clientConnected,&channel, &QWebChannel::connectTo);
// 后面需要改写这段Dialog dialog;channel.registerObject(QStringLiteral("dialog"), &dialog); // 将c++对象暴露到chanel中,于是可以在html/js中访问该c++对象
由于WebSocketClientWrapper 内部还包含了一个自定义的类WebSocketTransport,分析起来比较绕,而WebSocket
这篇关于跟着例子学Qt--2.standalone( C++ QWebChannel server and a HTML/JS client)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!