QT通过JS与HTML的交互

匿名 (未验证) 提交于 2019-12-02 20:30:32

头文件加入

QT       += core gui webenginewidgets webchannel

通过QWebChannel与JS交互原理

   QWebEnginePage *page = new QWebEnginePage(this);     webView->setPage(page);     webView->load(QUrl("qrc:/html/index.html"));     webView->show();     QWebChannel *channel = new QWebChannel(this);     //注册一个content  这里的内容通过JS的content来获取     channel->registerObject(QString("content"),this);     page->setWebChannel(channel);

注意:一定要先给WebView设置page,在加载网页,否则网页出不来!

QT发送信息到JS:

signals:     void sendText(const QString &s_user,const QString &s_pwd); //点击按钮 设置发送的文本 void MainWindow::callJSBtnClicked() {     //emit sendText(user->text(),password->text());     sendText(user->text(),password->text());     user->setText("");     password->setText(""); }

QT接收到JS的信息

public slots:     void receiveText(const QString &r_user,const QString &r_pwd);  void MainWindow::receiveText(const QString &r_user, const QString &r_pwd) {     user->setText(r_user);     password->setText(r_pwd); }


JS中对信息的操作

window.onload = function () {     new QWebChannel(qt.webChannelTransport,function (channel) {         var content = channel.objects.content;         //接收QT发送来的         content.sendText.connect(function (s_user, s_pwd) {             document.getElementById("userName").value = s_user;             document.getElementById("userPwd").value = s_pwd;         })         //传给QT         document.getElementById("submit").onclick = function () {                var userName = document.getElementById("userName").value;                var userPwd = document.getElementById("userPwd").value;                document.getElementById("userName").value = "";                document.getElementById("userPwd").value = "";                content.receiveText(userName,userPwd);         }     }) }

在MainWindow中关闭连接

MainWindow::~MainWindow() {     this->disconnect(); }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!