• QT之QScriptEngine的用法介绍


    QT之QScriptEngine的用法介绍

    成员函数

    1)QScriptEngine::evaluate(const QString &program, const QString &fileName = QString(), int lineNumber = 1)

    执行 JavaScript 代码并返回结果

    2)QScriptEngine::evaluate(const QScriptValue &script, const QString &fileName = QString(), int lineNumber = 1)
    执行 JavaScript 代码并返回结果。

    3)QScriptEngine::globalObject() const
    返回全局对象

    4)QScriptEngine::importExtension(const QString &extensionName)
    导入扩展。

    5)QScriptEngine::installTranslatorFunctions(const QScriptValue &target)
    安装翻译函数

    6)QScriptEngine::isEvaluating() const
    检查当前是否正在执行 JavaScript 代码。

    7)QScriptEngine::isEvaluating() const
    检查当前是否正在执行 JavaScript 代码。

    8)QScriptEngine::lastError() const
    获取最后一个错误。

    9)QScriptEngine::newQObject(QObject *object)
    创建一个 QObject 对象。

    10)QScriptEngine::newQObject(QObject *object, QScriptEngine::ValueOwnership ownership)
    创建一个 QObject 对象。

    11)QScriptEngine::newQObject(const QScriptValue &object):
    创建一个 QObject 对象。

    12)QScriptEngine::newQObject(const QScriptValue &object, QScriptEngine::ValueOwnership ownership)
    创建一个 QObject 对象。

    13)QScriptEngine::newQMetaObject(&QObject::staticMetaObject)
    创建一个 QMetaObject 对象。

    14)QScriptEngine::newQMetaObject(&QObject::staticMetaObject, QScriptEngine::ValueOwnership ownership)
    创建一个 QMetaObject 对象。

    15)QScriptEngine::newVariant(const QVariant &value):
    创建一个 QVariant 对象。

    16)QScriptEngine::newVariant(const QVariant &value, QScriptEngine::ValueOwnership ownership)
    创建一个 QVariant 对象。

    17)QScriptEngine::setProcessEventsInterval(int interval)
    设置处理事件的时间间隔。

    18)QScriptEngine::setProcessEventsInterval(int interval, QScriptEngine::ProcessEventsFlags flags)
    设置处理事件的时间间隔和标志。

    19)QScriptEngine::throwError(const QString &errorMessage)
    抛出一个错误。

    20)QScriptEngine::throwError(const QScriptValue &error)
    抛出一个错误。

    21)QScriptEngine::canEvaluate(const QString &program) const
    该函数用于检查给定的程序是否可以被评估,即语法是否正确,或者是否包含语法错误。如果程序可以被评估,则返回true,否则返回false。

    22)QScriptEngine::setAgent(QScriptEngineAgent *agent)
    该函数用于设置脚本引擎的agent对象,这个agent对象可以用于实现脚本的调试和分析。

    23)QScriptEngine::agent() const
    该函数用于获取当前脚本引擎的agent对象。

    24)QScriptEngine::hasUncaughtException() const
    该函数用于检查最后一个脚本评估是否导致了未捕获的异常。如果存在未捕获的异常,则返回true,否则返回false。

    25)QScriptEngine::uncaughtException() const
    该函数用于获取最后一个未捕获的异常对象。

    26)QScriptEngine::clearException()
    该函数用于清除最后一个未捕获的异常。

    27)QScriptEngine::collectGarbage()
    该函数用于显式地请求垃圾回收,清理不再使用的对象。

    28)QScriptEngine::reportAdditionalMemoryCost(qint64 cost)
    该函数用于报告额外的内存成本,这可能会触发垃圾回收。

    29)QScriptEngine::setObjectPrototype(const QScriptValue &object, const QScriptValue &prototype)
    该函数用于设置对象的原型。

    30)QScriptEngine::setActivationObject(const QScriptValue &activation)
    该函数用于设置脚本引擎的激活对象。

    31)QScriptEngine::setThisObject(const QScriptValue &thisObject)
    该函数用于设置关联上下文的this对象。

    32)QScriptEngine::newArray(int length = 0)
    该函数用于创建一个新的JavaScript数组。

    33)QScriptEngine::newDate(const QDateTime &date = QDateTime())
    该函数用于创建一个新的JavaScript日期对象。

    34)QScriptEngine::newFunction(const QScriptValue &function)
    该函数用于创建一个新的JavaScript函数。

    35)QScriptEngine::newObject()
    该函数用于创建一个新的JavaScript对象。

    36)QScriptEngine::newRegExp(const QString &pattern, const QString &options = QString())
    该函数用于创建一个新的JavaScript正则表达式对象。

    37)QScriptEngine::newString(const QString &value)
    该函数用于创建一个新的JavaScript字符串对象。

    38)QScriptEngine::newSymbol(const QString &value = QString())
    该函数用于创建一个新的JavaScript符号对象。

    39)QScriptEngine::newVariant(const QVariant &value)
    该函数用于创建一个新的JavaScript variant对象

    用法举例

    #include   
    #include   
      
    int main(int argc, char *argv[])  
    {  
        QScriptEngine engine;  
      
        // 定义一个JavaScript函数  
        QScriptValue func = engine.newFunction(  
            [](const QScriptValue &arg1, const QScriptValue &arg2) {  
                return arg1.toNumber() + arg2.toNumber();  
            }  
        );  
      
        // 将函数注册到全局对象中  
        engine.globalObject().setProperty("add", func);  
      
        // 执行JavaScript代码  
        QScriptValue result = engine.evaluate("var a = 1; var b = 2; add(a, b);");  
        qDebug() << "Result: " << result.toNumber(); // 输出:Result: 3  
      
        return 0;  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在这个例子中,我们创建了一个QScriptEngine对象,然后定义了一个JavaScript函数,并将其注册到全局对象中。然后我们执行一段JavaScript代码,该代码使用我们定义的函数将两个数字相加,并将结果打印出来。

  • 相关阅读:
    IO文件操作
    纯JS电子表格控件SpreadJS正式发布v16.2——新增甘特图插件
    大咖说·图书分享|Serverless工程实践:从入门到进阶
    经纬恒润为国产化芯片的AoU功能安全软件赋能
    025: vue父子组件中传递方法控制:$emit,$refs,$parent,$children
    oracle报错,XML节点值超过varchar(4000)截取方法。ORA-06502,ORA-06512,ORA-01706
    VC编译器编译命令cl、rc、link
    airplay:发现的实现
    Python对象复制竟然有这么多种方式,赶紧学起来!
    stm32之1602+DHT11+继电器
  • 原文地址:https://blog.csdn.net/techenliu/article/details/133362240