行业知识
c++/qt通过QWebChannel与JS/html网页端交互通信
2026-11-03 07:09:48
来源:互联网转载
1、需要从网上下载两个文件
websocketclientwrapper.cpp 和 websocketclientwrapper.hwebsockettransport.cpp 和 websockettransport.h
2、QWebChannel注册通信通信类对象名:“MyWebTransPort”,js调用这个名进行通信;
3、js发送数据至c++调用函数:void RecvTextFromJs(const QString &text);
c++发送数据至js调用函数:void SignalSendToJs(QString text);
4、js/html网页作为客户端,c++/qt启动本地服务器作为服务端进行通信;
5、QT += webchannel websockets
备注:二者通信是点与点之间进行的一种双向互相通信的一种方式,通过qt特有的信号与槽进行接口调用通信。
亲测可用,话不多说上源码:
**
亲,感觉不错的话点个赞哦*
video
一、c++/qt端:
1、MainWindow.cpp
#include "MainWindow.h"#include "ui_MainWindow.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this); initWebTransPort(); connect(ui->pushButton,&QPushButton::clicked,[=](){ static int i =0; i++; QString text = QString("send to js file %1 号").arg(QString::number(i)); emit m_web_transport->SignalSendToJs(text); UpdateTextMessage(text); qDebug()textEdit->append(text);}void MainWindow::initWebTransPort(){//通信核心代码 QString serverPort = "8003"; // 建立一个websocket服务器 if(m_websocketServer == NULL) m_websocketServer = new QWebSocketServer(QStringLiteral("MyServer"),QWebSocketServer::NonSecureMode,this); quint16 port = serverPort.toUInt(); if(!m_websocketServer->listen(QHostAddress("127.0.0.1"),port)) { qDebug()registerObject("MyWebTransPort",m_web_transport); //网页上调佣MyWebTransPort,即可连接槽函数通信 qDebug()
上一篇:轻松下载cities的终极指南,一步到位,轻松搞定!
下一篇:怎么不能连接服务器?