写在前面
欢迎访问我的博客
- 假设你已经知道了如何让Qt与javascript通信,如果布吉岛,请移步Qt与Javascript的通信机制
- 其实有两种方法,我都试过。第一种是一次传一个数据,传个n次,就可以传完,但是效率很低。第二种是一次性传完,不仅效率高,而且还爽。
数据整合
假设有一个数组,double
类型的,要把它放到一个QString中,并且传给JS。在mainwindow.cpp中修改槽函数:
void MainWindow::on_pushButton_clicked()
{
QJsonArray num_json ; //声明QJsonArray
QJsonDocument num_document; //将QJsonArray改为QJsonDocument类
QByteArray num_byteArray; //
double num[2]={114.12,114.13};
int i=0;
for(i=0;i<2;i++) //将数组传入压入num_json
{
num_json.append(num[i]);
}
num_document.setArray(num_json);
num_byteArray = num_document.toJson(QJsonDocument::Compact);
QString numJson(num_byteArray); //再转为QString
qDebug() << numJson;
QWebFrame *webFrame = ui->webView->page()->mainFrame();
QString cmd = QString("showarray(\"%1\")").arg(numJson);
webFrame->evaluateJavaScript(cmd); //传给javascript
}
格式转换
- 在
yanshi.html
中加入
function showarray(numlist) //仅把qt传来的数组转换成可用的list
{
alert(numlist);
var num_list; //以下为格式转换,分割成可用的数组
num_list = numlist.substring(1,numlist.length-1);
num_list = num_list.split(",");
alert("the num_list is: "+num_list[0]+" "+num_list[1]);
}
-
可以看看QT传递给js的是什么
控制台打印QString -
再看看js接收了什么
点击pushbutton
说明传递成功.
-
格式能不能转换呢?
点击ok之后
说明成功了
可能有不正确的地方,敬请谅解,如果觉得对您有所帮助,请打赏一下呗,谢谢~
码字不易,转载请注明地址
网友评论