问题标签 [qjsengine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1149 浏览

javascript - 自定义 C++ 类型到 QJSEngine:成员函数返回值始终是 QVariant

我有一组基于 QJSEngine 的 Qt 5 中暴露给 javascript 的 C++ 类(因为 Qt 脚本似乎已被弃用)。

我的 QObject 派生类 A 和 B 有 Q_OBJECT 宏并且也使用 Q_DECLARE_METATYPE 宏。

我已经为我的类公开了工厂函数,这些函数允许我从 javascript 内部创建新实例。以下所有工作正常:

有没有办法让我确保 javascript 中的 GetParent 被识别为实际的 A 类对象,而不是 QVariant?

0 投票
4 回答
4675 浏览

javascript - 如何使用 QJSEngine 构建 API?

我从 Qt 开始,我的一个项目是使用 QJSEngine 来评估 javascript,我想为脚本提供一个完整的 API,包括类和全局函数。

现在我的程序只提供 ECMAScript 默认的东西(eval、encodeURI、parseInt 等),但我需要向代码公开一些自定义类,比如浏览器 API(WebSocket 类、Image 类、文档对象)。例如:

我需要在 C++ 中定义类的行为,它无助于评估类定义并让用户代码运行。

0 投票
1 回答
929 浏览

c++ - 访问 QJSEngine 中的动态属性

我可以访问QObject传递给 a 的 s 的属性QJSEngine,但为什么我不能访问动态属性?

回报:

使用 Qt 5.2。

0 投票
1 回答
2347 浏览

c++ - QJSEngine 删除我的 QObject,如何在 QJSEngine::newQObject 之后更改所有权?

尝试使用子类 QObject 作为参数执行小脚本。

在销毁 jsEngine 时,它​​为我的子对象调用 delete(因为 newQObject 使用 JavaScriptOwnership 创建它)。如何避免它,如何更改 arg 的所有权?

脚本很简单:

UPD: 可以调用QQmlEngine::setObjectOwnership(child, QQmlEngine::CppOwnership);对象,因为它是静态函数。只是从帮助中不清楚。认为它也应该在QJSEngine

0 投票
1 回答
2100 浏览

c++ - QtScript 与 QJSEngine 何时使用一个或另一个?

我必须在 C++ 应用程序中运行一系列 javascript“脚本”。其中大部分是重复动作。这里的代码示例。

我知道 Qt,因为版本 5 包含 2 个 javascript 引擎:QtScript 和 QJSEngine。

我的问题是我们应该在哪些情况下使用一种或另一种?哪个表现更好,在哪些情况下?

0 投票
1 回答
1007 浏览

qt5 - 如何使用 QJSEngine 实例化 c++ 对象

是否可以向 QJSEngine(QML 引擎)声明一个 C++ 类,以便可以从 javascript 实例化该类的对象?

到目前为止,我能想到的唯一解决方案是使用 Q_INVOKABLE 创建一个工厂方法,该方法使用 QJSEngine ::newQObject() 返回一个对象

谢谢!

0 投票
0 回答
977 浏览

c++ - QJSEngine 与 QtScript 和 QList

由于Qt5.5 是实际的,QtScript因此已弃用。替换是QtQML 和QJSEngine. 现在,我将我的项目重写为新引擎。我有一些课程,例如:

并通过QtScript以下方式注册:

在新的 QJSEngine 中,我使用 qmlRegisterUncreatableType 注册节点。但是,我找不到注册 QList 的方法。

知道任何人的正确方法吗?

0 投票
1 回答
2434 浏览

javascript - QJSEngine 评估结果不包含函数

我正在QScriptEngine将代码迁移到QJSEngine,并且遇到了在评估脚本后无法调用函数的问题:

这个脚本的输出是:

当我使用时可以调用相同的函数QScriptEngine

为什么函数不作为评估结果的属性存在,我该如何调用它?

0 投票
2 回答
2322 浏览

qt - QJSEngine:打印到控制台

我正在从QScriptEngine(已弃用)移动到QJSEngine,我发现我无法使用print

输出是:

QScriptEngine它工作。

那么,打印一些东西到控制台的方法是什么QJSEngine?在文档中找不到任何内容。我尝试使用console.log,但console也没有定义。

0 投票
0 回答
193 浏览

c++ - QJSEngine checkForSyntax 函数

在 LiScriptEngine 我们有以下功能:-

QScriptSyntaxCheckResult QScriptEngine::checkSyntax(const QString & program)

这对于识别引擎执行程序时发生的错误类型更有用。目前我正在从 ScriptEngine 迁移到 JSEngine。但是在 JSEngine 中我找不到真正的等价物,JSEngine 中的 exvaluate() 返回 JSValue 没有真正的错误对象。在浏览 JSValue 的文档时,我可以看到诸如 isError() 之类的函数以及诸如 line、stack、name 之类的错误属性...但是这些都不等同于 checkForSyntax。关于这个问题的任何想法或者这不是可能在 JSEngine 中。