• 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代码,该代码使用我们定义的函数将两个数字相加,并将结果打印出来。

  • 相关阅读:
    Jenkins部署失败:no space left on device
    什么是命令行参数解析和选项处理?
    Transformers 源码阅读之BertTokenizerFast分词模型
    「AIGC」Python实现tokens算法
    MySQL慢查询:慢SQL定位、日志分析与优化方案
    【Gazebo入门教程】第六讲 控制器插件的编写与配置(下)
    Oauth2系列7:授权码和访问令牌的颁发流程是怎样的?
    centos7容器安装宝塔
    antdpro使用AbortController取消请求
    光纤连接器的连接方法
  • 原文地址:https://blog.csdn.net/techenliu/article/details/133362240