QT JS交互、调用JS、传值

        本文详细的介绍了QT JS交互、调用JS、传值的各种操作,包括QT向JS传递String字符串、包括QT向JS传递Int数字、包括QT向JS传递List数组,同时也接收JS向QT返回的List数组、JS向QT返回的Json、JS向QT返回的数字、JS向QT返回的字符串。

QT JS交互、调用JS、传值_第1张图片

本文作者原创,未经允许禁止转载。

QT JS交互、调用JS、传值目录

1 setStr

2 setInt

3 setList

4 getArr

5 getObj

6 getNum

7 getStr

8 JS代码


报错 : js: Uncaught SyntaxError: missing ) after argument list

主要是传递字符串的问题例如:

    QString str = "hello word!";
    //错误写法
    strText = "QDataStr(" + str + ")";

    //正确写法。双引号内,若有字符串要使用引号时,应该使用单引号。
    //正确写法。单引号内,若有字符串要使用引号时,应该使用双引号。
    strText = "QDataStr('"+ str + "')";
    ui->widget->page()->runJavaScript(strText);

1 setStr

        QT给JS传String类型参数

    QString str = "hello word!";

    //正确写法。双引号内,若有字符串要使用引号时,应该使用单引号。
    //正确写法。单引号内,若有字符串要使用引号时,应该使用双引号。
    strText = "QDataStr('"+ str + "')";
    ui->widget->page()->runJavaScript(strText);

QT JS交互、调用JS、传值_第2张图片

2 setInt

        QT给JS传Int类型参数

    int a = 100;
    int b = 100;

    numInt << a << b;

    strText = QString("QDataInt(" + QString(QJsonDocument(numInt).toJson()) + ")");

    ui->widget->page()->runJavaScript(strText, [](const QVariant &v)
    {
        qDebug() << "QDataInt() = " << v.toInt();
    });

QT JS交互、调用JS、传值_第3张图片

3 setList

        QT给JS传List类型参数

    numList << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 ;
    strText = QString("QDataList(" + QString(QJsonDocument(numList).toJson()) + ")");
    ui->widget->page()->runJavaScript(strText);

QT JS交互、调用JS、传值_第4张图片QT JS交互、调用JS、传值_第5张图片

4 getArr

        QT调用JS函数接收ArrayList类型返回值

    strText = "QReturnArr()";
    ui->widget->page()->runJavaScript(strText, [](const QVariant &v)
    {
        QJsonArray ja = v.toJsonArray();
        for (int i=0;iQT JS交互、调用JS、传值_第6张图片

5 getObj

         QT调用JS函数接收Json类型返回值

    strText = "QReturnObj()";
    ui->widget->page()->runJavaScript(strText, [](const QVariant &v)
    {
        QJsonObject jo = v.toJsonObject();
        qDebug() << "QReturnObj = " << jo;
    });

QT JS交互、调用JS、传值_第7张图片

6 getNum

         QT调用JS函数接收Double类型返回值

    strText = "QReturnNum()";
    ui->widget->page()->runJavaScript(strText, [](const QVariant &v)
    {
        qDebug() << "QReturnNum = " << v.toDouble();
    });

QT JS交互、调用JS、传值_第8张图片

7 getStr

         QT调用JS函数接收QString类型返回值

    strText = "QReturnStr()";
    ui->widget->page()->runJavaScript(strText, [](const QVariant &v)
    {
        qDebug() << "QReturnStr = " << v.toString();
    });

QT JS交互、调用JS、传值_第9张图片

8 JS代码



  
    
    qjs

  
  
    

你可能感兴趣的:(QT,javascript,开发语言,ecmascript)