Qt5项目,使用QWebEngineView替换QWebView

在Qt项目中,升级Qt版本时难免会遇到从QWebView到QWebEngineView的转换,他们之间的用法也多少有些变化。话不多说,下面是我遇到这个问题时的几个关键部分。

一、Qt调用js

QWebView的方法是

webview->page()->mainFrame()->evaluateJavaScript(cmd);

QWebEnginePage的用法为

webview->page()->runJavaScript(cmd);

二、js调用Qt

1. 在QWebView中实现j方法是先向js注册一个方便js调用的对象,此处为“formExtractor”

webview->page()->mainFrame()->addToJavaScriptWindowObject("formExtractor",this);

然后在js文本中直接调用对象即可

2. 使用QWebEngineView,需要先为QWebEnginePage添加一个QWebChannel,通过QWebChannel向js注册对象

webview->page()->setWebChannel(new QWebChannel(this));
webview->page()->webChannel()->registerObject(QStringLiteral("formExtractor"), this);

在js文本中要先载入qwebchannel.js,qwebchannel.js要从Qt中拷贝出来放到工程下面。然后再创建QWebChannel把C++传来的对象,在js中起个别名(我是这样理解的)。

 

 

你可能感兴趣的:(qt)