1. Qt4中使用webkit模块;
2. Qt5 ~Qt5.5使用webkitwidgets模块,使用WebKit作为后端;
3. Qt5.6以上版本使用webenginewidgets模块,使用Chromium作为后端。QT5.6之后开始支持
这里一定要指定msvc2017(或者msvc2019都可以) 64编译器,如果指定minGW依然会报错,因为MinGW不支持QWebEngine,如果QT中msvc2019编译kit是感叹号说明没有安装MSVC2019依赖,
需要在安装VS2019的时候,把这些也安装了,我只安装了X64缓解库和生成工具,就自动OK了
QT5.15.2 webenginewidgets 64位可以在win7 64位上运行,打包的时候添加vcruntime140_1.dll
QT C++调用JS
测试的html demo
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>test1</title>
<script type="text/javascript">
function getGeoData()
{
alert("123");
return "xiaoli"
}
function showalert(text)
{
alert(text)
}
function buttonClick(){
console.log("you click 你点击了按钮哦");
res = getGeoData()
document.getElementById('myvalue').innerHTML = res;;
alert(res);
}
function callFunctionDemo(name){
alert("Hello World " + name);
}
</script>
</head>
<body>
<input id="button" type="button" value="点击" onclick="buttonClick();">
<a id= "myvalue">empty value</a>
</body>
</html>
创建一个对话框APP,添加
QT += core gui webenginewidgets network
QWebEngineView* m_pWebView;
m_pWebView = new QWebEngineView(this);
this->setCentralWidget(m_pWebView);
this->setWindowState(Qt::WindowMaximized);
m_pWebView->setUrl(QUrl("file:E://web//index.html"));
connect(m_pWebView, SIGNAL(loadFinished(bool)), this, SLOT(slotLoadfinish(bool)));
m_pWebView->show();
//调用的函数哪怕没有参数也要括号
QString jsCode = QString("showalert('%1')").arg("Hello QtWebEngine xiaoyu```````````!");
m_pWebView->page()->runJavaScript(jsCode, [](const QVariant &v) { qDebug() << v.toString(); });