本文共 947 字,大约阅读时间需要 3 分钟。
QT提供了例子说明如何加载本地的jquery文件。网上也有很多如何利用QWebChannel实现C++与JS互相通信的例子。
下面总结一下如何将qwebchannel.js加载到非本地网页(qwebchannel.js在QT的安装目录可以搜索到)。
1 打开qwebchannel.js文件
QString script; //类的成员函数
QFile jsFile("c:/channel/qwebchannel.js");
if (jsFile.open(QIODevice::ReadOnly)){
script = jsFile.readAll();
jsFile.close();
}
2 运行(注意要在网站加载完后再运行)
m_webView->page()->runJavaScript(script);
3 C++端创建QWebChannel实例,并注册通信对象
m_webChannel = new QWebChannel();
m_webChannel->registerObject(QStringLiteral("webobj"),this);
m_webView->page()->setWebChannel(m_webChannel);
4 在网页运行js,并且调用C++端的函数
QString code = QStringLiteral("$('body').append('<script>" \
"new QWebChannel(qt.webChannelTransport,function(channel){" \
"var webobj=channel.objects.webobj;webobj.jscallme();}" \
");<\/script>')");
m_webView->page()->runJavaScript(code);
jscallme函数是C++端定义的函数:QMessageBox::information(nullptr,"jscallme","中国123");
需要更多js与C++交互例子可以看博文:https://blog.csdn.net/sunnyloves/article/details/88683090
转载地址:https://blog.csdn.net/hulinhulin/article/details/119790602 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!