QT+HTML+JS
写在前面
第一次写博客,目的就是记录一些自己在工程中遇到到一些小问题,同时分享出来,加深自己记忆的同时,也希望可以帮助到遇到相同问题的人。
本文参考了:
Qt嵌入浏览器——QWebChannel实现与页面的通信
QT+HTML+JS混合编程(QT5.9+QWebEngineView +QWebchannel)
主要实现两个大功能:
1、QT+QWebEngineView 嵌入浏览器;
2、QT+QWebchannel 实现与JS的相互通信。
Qt嵌入浏览器
(1)、工程.pro文件添加
QT += webenginewidgets
(2)、实例化QWebEngineView,使用load(QString url)方法加载网页;
eg:
#include <QWebEngineView>
QWebEngineView *m_WebEngineView;
m_WebEngineView = new QWebEngineView();
m_WebEngineView->load("https://www.baidu.com/"); //加载百度页面
m_WebEngineView->reload(); //重新加载当前页面
示意图:
Qt与JS的相互通信
(1)、创建QWebChannel对象;
QWebChannel *webChannel = new QWebChannel(this);
(2)、向QWebChannel对象注册Qt对象,使用registerObject(const QString &id, QObject *object)方法,参数一:注册所需的ID号或者名字,用于JS获取QT的对象时所用的索引名;参数二,QT对象
webChannel->registerObject("bridge",m_JsContext);
(3)、将设置好的QWebChannel对象设置为当前页面的通道。
m_WebEng