寫在前面
歡迎訪問我的博客
- 假設(shè)你已經(jīng)知道了如何讓Qt與javascript通信嗓节,如果布吉島,請移步Qt與Javascript的通信機制
- 其實有兩種方法泰涂,我都試過魂角。第一種是一次傳一個數(shù)據(jù),傳個n次尚猿,就可以傳完窝稿,但是效率很低。第二種是一次性傳完凿掂,不僅效率高伴榔,而且還爽。
數(shù)據(jù)整合
假設(shè)有一個數(shù)組庄萎,double
類型的踪少,要把它放到一個QString中,并且傳給JS糠涛。在mainwindow.cpp中修改槽函數(shù):
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++) //將數(shù)組傳入壓入num_json
{
num_json.append(num[i]);
}
num_document.setArray(num_json);
num_byteArray = num_document.toJson(QJsonDocument::Compact);
QString numJson(num_byteArray); //再轉(zhuǎn)為QString
qDebug() << numJson;
QWebFrame *webFrame = ui->webView->page()->mainFrame();
QString cmd = QString("showarray(\"%1\")").arg(numJson);
webFrame->evaluateJavaScript(cmd); //傳給javascript
}
格式轉(zhuǎn)換
- 在
yanshi.html
中加入
function showarray(numlist) //僅把qt傳來的數(shù)組轉(zhuǎn)換成可用的list
{
alert(numlist);
var num_list; //以下為格式轉(zhuǎn)換援奢,分割成可用的數(shù)組
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的是什么
-
再看看js接收了什么
說明傳遞成功.
-
格式能不能轉(zhuǎn)換呢?
說明成功了
可能有不正確的地方忍捡,敬請諒解集漾,如果覺得對您有所幫助切黔,請打賞一下唄,謝謝~
碼字不易具篇,轉(zhuǎn)載請注明地址