QT与JS获取QT数据
程序员文章站
2024-03-16 18:42:10
...
本文是QT5.13里的结果。
QWebEngineview里打开网页之后,实现QT程序和H5,JS的通信,以方便实现一些功能。
采用的是QWebChannel来实现他们的交互的
QWebChannel *channel = new QWebChannel(this);
channel->registerObject("test", new WebObject());
//这个是为加载网页失败的时候不显示错误页面
m_ui.webEngineView->page()->profile()->settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false);
m_ui.webEngineView->page()->profile()->settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true);
m_ui.webEngineView->page()->setWebChannel(channel);
WebOjbect类为
class WebObject :public QObject
{
Q_OBJECT
public:
WebObject();
~WebObject();
Q_INVOKABLE void WebWriteLog(QString str);
Q_INVOKABLE void OpenUrl(QString url);
Q_INVOKABLE QString GetUserData();
Q_PROPERTY(QString UserData READ GetUserData)
};
//
//WebWriteLog 这个函数是可以直接在JS里调用的函数
//UserData 可以在JS里直接read,因为没写WRITE,所以在JS假如对其进行赋值则会出错,
//这个在编译启动的时候,会有一些提示。
//要去掉这些提示则可以添加WRITE,并写一个USERDATACHANGE对应的槽就好了
一个测试的HTML
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body style="background:#282c34;">
<script src="qwebchannel.js"></script>
<h3 style="color:#ffffff;">我就是测试下</h3>
<input type="button" value="callback" onclick="onCallback()">
<input type="button" value="callback2" onclick="onCallback2()">
<script type="text/javascript">
new QWebChannel(qt.webChannelTransport, function(channel) {
window.test = channel.objects.test;
})
function onCallback() {
if (test) {
test.WebWriteLog()
}
}
function onCallback2() {
if (test) {
test.OpenUrl("abcdddf",function(returnValue){alert(returnValue)})
data = test.UserData //这个是直接获取UserData值
}
}
function web_login(data){
alert(data.toString())
}
function web_logout(){
alert("log out")
}
</script>
</body>
</html>
备注:qwebchannel.js在QT安装目录里搜一搜就好了,复制过来就行
QT调用JS则相对比较简单了
char szTmp[1024] = { 0 };
sprintf(szTmp, "web_login({\"userid\":11111,\"token\":\"aaaaa\"}));
m_ui.webEngineView->page()->runJavaScript(szTmp);
这样就会调用web_login 并传入之后的字符串为参数。当然web_login在JS里要有,不然会出错。
上一篇: Qt测试框架概述
下一篇: 怎么在一次循环内找出一个数组最小的2个数
推荐阅读
-
QT与JS获取QT数据
-
Qt模拟分子扩散与碰撞
-
js获取网页宽高 博客分类: js技术开发与应用 js获取网页宽高变化
-
QT篇之QT与MxDraw COM控件
-
target与currentTarget的区别(jqueryui方式获取z-Index) 博客分类: Web前端-JS客户端 targetcurentTargeteventjavascript
-
PHP获取表单数据与HTML嵌入PHP脚本的实现
-
JS获取填报扩展单元格控件的值 博客分类: 报表技术 数据分析技术
-
js获取后七天的数据,如通过获取一周的周一的时间,然后计算出周日的日期
-
PHP获取表单数据与HTML嵌入PHP脚本的实现
-
VS+QT——QImage图片的点击选中与复制:从建工程开始