QT中怎么把一个数组传给JavaScript

写在前面
欢迎访问我的博客

  1. 假设你已经知道了如何让Qt与javascript通信,如果布吉岛,请移步Qt与Javascript的通信机制
  2. 其实有两种方法,我都试过。第一种是一次传一个数据,传个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

}

格式转换

  1. 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]);

}
  1. 可以看看QT传递给js的是什么


    控制台打印QString
  2. 再看看js接收了什么


    QT中怎么把一个数组传给JavaScript_第1张图片
    点击pushbutton

    说明传递成功.

  3. 格式能不能转换呢?


    QT中怎么把一个数组传给JavaScript_第2张图片
    点击ok之后

    说明成功了


可能有不正确的地方,敬请谅解,如果觉得对您有所帮助,请打赏一下呗,谢谢~
码字不易,转载请注明地址

你可能感兴趣的:(QT中怎么把一个数组传给JavaScript)