zoukankan      html  css  js  c++  java
  • Qt使用QJSEngine执行脚本

    有时候需要进行一些计算,程序是使用c++来实现的,使用c++来进行计算不是很灵活,这时候可以使用脚本来进行计算,这样灵活,且易于扩展。写了一个简单的Demo进行验证,具体例子如下。

    #include <QCoreApplication>
    #include <QJSEngine>
    #include <QString>
    #include <QFile>
    #include <QTextStream>
    #include <string>
    
    int main(int argc, char *argv[])
    {
       QCoreApplication a(argc, argv);
    
       // load javascript file. //
       std::string strJsFilePath = "./test.js";
       QString FileName = QString::fromStdString(strJsFilePath);  //QString(QString::fromLocal8Bit(strJsFilePath.c_str()));
    
       QFile scriptFile(FileName);
       if (!scriptFile.open(QIODevice::ReadOnly | QIODevice::Text))
       {
           printf("Load Js File Failed, FilePath: %s
    ", strJsFilePath.c_str());
           return  -1;
       }
       QTextStream stream(&scriptFile);
       QString JsContents = stream.readAll();
    
       QJSEngine JsEngine;
    
      // 使用jsEngine 记载js脚本 //
       JsEngine.evaluate(JsContents, FileName);
        
        // get js function. //
       QJSValue JsfuncAdd = JsEngine.globalObject().property("Add");
       QJSValue JsfuncSub = JsEngine.globalObject().property("Sub");
    
        // 执行js中的函数 //
       QJSValueList args;
       args << 30 << 15;
       QJSValue result = JsfuncAdd.call(args);   // call js function add. //
       double ResVal = result.toNumber();
    
       result = JsfuncSub.call(args);  // call js function sub. //
       ResVal = result.toNumber();
    
       return  0;
       // return a.exec();
    }
    
    

    调用的js脚本如下,两个函数一个进行加法运算,一个进行减法运算。

    function Add(a, b)
    {
        return a + b;
    }
    
    function Sub(a, b)
    {
        return a - b;
    }
    

    注意: 需要再pro文件中加上 QT += core qml

  • 相关阅读:
    线程的创建和运行
    Spring SpringMvc Mybatis Maven整合
    使用 Redis 缓存来实现用户最近浏览的商品列表
    Java泛型
    HDFS的HA集群原理分析
    MapReduce-自动化运行配置
    大数据-HDFS 集群搭建的配置文件
    鼠标线状移动特效
    Mac 终端 Tomcat 环境配置过程
    oracle列转行
  • 原文地址:https://www.cnblogs.com/ay-a/p/13190155.html
Copyright © 2011-2022 走看看