问题标签 [qtscript]

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 投票
2 回答
832 浏览

qt - 如何在 QtScript 中使普通的公共方法可用

在我的 Qt 应用程序中,使用 QtScript 的脚本可以访问对话框的所有控件。为此,我使用 QScriptEngine 的 newQObject 方法,例如:

例如,我现在可以在脚本中执行此操作:

只要已发布控件 ( okButton ) 的调用方法 ( s​​etEnabled )在对象类中被标记为公共槽,这就可以正常工作。不幸的是,我希望能够从脚本调用的许多方法仅在正常的公共范围内定义。

解决这个问题的一种方法是从每个 Qt UI 元素派生一个新类,将这些方法覆盖为公共插槽。但这意味着编码和维护方面的巨大开销,这在这种情况下是不可取的。

有没有办法告诉脚本引擎默认提供普通的公共功能?

0 投票
0 回答
246 浏览

qt - QScriptEngine 环境占用多少内存?

我可以通过一个 QScriptEngine 环境测量分配的总内存吗?我有一个应用程序在同一进程中有许多 QScriptEngine 实例,我需要知道每个实例使用多少内存。

0 投票
1 回答
1392 浏览

c++ - 具有自定义类的 QtScript instanceof 引发与原型相关的错误

我有一个 Qt 项目,它使用 QtScript 模块使我的应用程序的某些组件可编写脚本。

在多次尝试使现有类在 QtScript 中直接可用之后,我选择使用继承 QObject 和 QScriptable 的包装类(主要是因为我有一些非 qobject 派生类被其他继承 QObject 的类继承,它是因此我不可能统一对待我所有的课程)。

我现在正在尝试使用基于原型的继承。

我必须上课Drawable并且MeshDrawable有相应的包装器Wrapper_DrawableWrapper_MeshDrawable. MeshDrawable继承DrawableWrapper_MeshDrawable继承Wrapper_Drawable

我让脚本引擎 ( m_scriptEngine) 知道这两个类:

如果我没记错的话,文档说脚本引擎会将原型应用于Wrapper_Drawable类型对象,Wrapper_MeshDrawable因为它们在 C++ 中具有继承关系。

我有一个方法Wrapper_Drawable::drawables()可以返回 a 的所有孩子Wrapper_Drawable(实际上是包裹在 中的 Drawable 的孩子Wrapper_Drawable)。作为Drawable一个抽象类,所有的孩子实际上都是MeshDrawables。

因为我希望用户“相信”他使用Drawables 而不是Wrapper_Drawables,所以我声明:

上面声明了 wrapper_drawable_obj 。


我想测试引擎是否识别Wrapper_MeshDrawables,即使它们是在Wrapper_Drawables 数组中声明的。

可悲的是, instanceof 抛出此错误:

如果我尝试这样做curChildren instanceof Number,它会返回 false,所以我猜这个问题与 Wrapper_Drawable 有关,但我无法弄清楚它到底是什么。

预先感谢您的帮助。

编辑 >我添加了 ScriptManager(处理脚本引擎并声明各种类型)、Wrapper_Drawable(只有一些方法,否则我无法发布此消息)和 Wrapper_MeshDrawable 的代码。

我还仔细检查instanceof了 Wrapper_Drawable 对象,用 Number 返回 false,用 Object 返回 true,并用 Drawable 引发上述错误(与名称不同,这是 Wrapper_Drawable 对象)。

所以,有 Wrapper_Drawable 类的代码:

共产党:

MeshDrawable:

共产党:

最后是 ScriptManager(我在其中向脚本引擎声明各种类型):

CPP

0 投票
2 回答
1562 浏览

c++ - QtScript 和线程

我想从 QtScript 脚本运行几个并发作业:

这些作业本质上是一系列远程过程调用(ZeroC Ice),需要在多个点同步。

Qt 4.8.0 文档没有提到QScriptEngine线程安全。我的问题:

  1. QScriptEngine使用单线程同时从多个线程执行 QtScript 函数是否安全?

  2. 你会推荐什么方法来完成这项任务?

笔记:

  1. 脚本不是由程序员编辑,而是由电气工程师编辑,我想让脚本尽可能简单和干净。
0 投票
2 回答
2036 浏览

qt - QtScript 加枚举

我正在将 QScript 添加到我的 Qt 应用程序中。我已经添加了元数据并使用一些元数据函数来通过 C++ 代码进行查询。这很好——我可以导航对象层次结构并打印出值(包括枚举)。

但是,我看不到让枚举在 Qt 脚本中工作。

我有我的课...

我有另一个类,它有一个将枚举作为参数的方法......

这个类在另一个类中公开 - 对不起,我应该简化这个例子。如果我编写以下 jscript 代码,

我收到一个我期望的错误...

因此,qtscript 似乎知道枚举类型。

我正在努力做的是从 jscript 设置枚举参数。我尝试了很多组合...

还有很多。

如果我尝试使用整数,我会得到......

这似乎暗示 jscript 不知道我的枚举。

有什么建议么?

我是否需要使用 qRegisterMetaType 或 qScriptRegisterMetaType 来访问我的枚举?该文档并不建议我需要这样做。我是否需要为 qScriptRegisterMetaType 方法实现转换器功能。

还是我的语法对于 jscript 是错误的?

有人有一个工作的例子吗?

谢谢,弗兰克

0 投票
1 回答
259 浏览

qt - 我需要在 QTscript 中为 Eiskalt DC++ 编写一个脚本。我如何开始学习使用 Qtscript?

我不懂 Javascript,也从未使用过 Qt。我确实使用c ++,但我认为这没有多大帮助?这是一个非常简单的脚本,但我找不到 Qtscript 的任何教程等。

0 投票
1 回答
1214 浏览

qt - 将 QStringList 公开为 QtScript 数组

我有一些需要对一些 C++ 数据进行操作的 QtScript。我已经通过 公开了许多变量QScriptEngine::globalObject().setProperty(),但这似乎只适用于简单数据类型和 QStrings。

我试过使用QScriptEngine::newVariant(),但没有一个QVariant成员函数暴露给脚本引擎。

理想情况下,我希望能够将 QStringList 转换为普通的 QtScript 数组并在其上调用本机数组函数。有没有办法做到这一点?

0 投票
1 回答
382 浏览

javascript - QtScript Javascript 对象失去属性

我创建了一个 QScriptEngine 并将一个 QObject 设置为具有一些信号/插槽的全局对象。然后我加载一些脚本文件并将其传递给引擎(使用评估)。该脚本创建一个对象并将全局对象的一些信号连接到它的函数。

可悲的是,脚本对象的属性(this.password)在从信号调用其函数时被清除(它在评估期间设置,我检查过)。

这是脚本:

任何想法为什么会发生这种情况?

问候本

0 投票
5 回答
4822 浏览

javascript - qtScript 上 JavaScript 的 setTimeout 等价物是什么?

没什么可补充的;什么是 qtScript 上 JavaScript 的 setTimeout 的等价物?

0 投票
1 回答
506 浏览

qt - “使应用程序可编写脚本”是什么意思,我们应该什么时候使用它?

最近我注意到 Qt 中的一些类称为 Qt 脚本模块,根据文档,它用于使应用程序可编写脚本!这是我的问题:

  1. 这是什么意思?使应用程序可编写脚本?
  2. 我们应该什么时候使用它?

提前致谢