美文网首页
QT中怎么把一个数组传给JavaScript

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

作者: Zliang_hhh | 来源:发表于2017-12-25 22:10 被阅读449次

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

    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接收了什么


      点击pushbutton

      说明传递成功.

    3. 格式能不能转换呢?


      点击ok之后

      说明成功了


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

    相关文章

      网友评论

          本文标题:QT中怎么把一个数组传给JavaScript

          本文链接:https://www.haomeiwen.com/subject/ogprgxtx.html