当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/179599.html

相关文章:

  • vim 工具的使用
  • RPA有什么优势?RPA的8大优势!建议学习!
  • 初级篇—第二章SELECT查询语句
  • PostMan的学习
  • 配置OSPF路由
  • CCF CSP认证 历年题目自练Day17
  • 基于Matlab实现多因子选股模型(附上源码+数据)
  • 【中秋国庆不断更】OpenHarmony多态样式stateStyles使用场景
  • Qt扩展-QCustomPlot绘图基础概述
  • 二、局域网联机
  • 决策树剪枝:解决模型过拟合【决策树、机器学习】
  • Ubuntu部署运行ORB-SLAM2
  • 二十,镜面IBL--打印BRDF积分贴图
  • 自动驾驶:未来的道路上的挑战与机遇
  • Go 语言 iota 的神奇力量
  • 前端开发和后端开发的一些建议
  • 基于 SpringBoot+Vue 的教室人事档案管理系统
  • Lua学习笔记:require非.lua拓展名的文件
  • Python 编程基础 | 第三章-数据类型 | 3.3、浮点数
  • beego---ORM相关操作
  • 【网络原理】初始网络,了解概念
  • 对象存储,从单机到分布式的演进
  • 结构型设计模式——桥接模式
  • keepalived的vip实现nginx节点的主备
  • C++之std::atomic解决多线程7个问题(二百四)
  • tailwindcss 如何在 uniapp 中使用
  • oracle-使用PLSQL工具自行修改用户密码
  • 自动驾驶技术:现状与未来
  • C++ 类构造函数 析构函数
  • C++标准模板(STL)- 输入/输出操纵符-(std::get_time,std::put_time)