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 <QScriptEngine>  
#include <QDebug>  
  
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;  
}

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

付宇利

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值