Qt5项目,使用QWebEngineView替换QWebView

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

一、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文本中直接调用对象即可

<script type = "text/javascript" >	  
	function leftClickEvt(){
		formExtractor.onCLicked();
	}
</script>

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中起个别名(我是这样理解的)。

<script type="text/javascript" src="./qwebchannel.js"></script> 
<script type = "text/javascript" >
	new QWebChannel(qt.webChannelTransport, function(channel) {
        window.formExtractor = channel.objects.formExtractor;
    })
	function leftClickEvt(){
		formExtractor.onCLicked();
	}
</script>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值