问题标签 [qscript]

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 投票
0 回答
313 浏览

python - 将 Qt C++ QObject 暴露给 Python

我有一个执行一些数据密集型操作的软件组件(Qt/C++ GUI-less 库)。

将其功能公开为 Python 本机扩展的最佳方式是什么?在 Boost::Python 中手动包装它?任何基于 QObject/QMetaObject 的东西?也许重用 QScript 包装器?

注意 - 我知道这个问题与软录制有关,但我认为可能有一种我一无所知的规范方法,我希望这个问题不会演变成个人偏好评论风暴

0 投票
1 回答
245 浏览

javascript - Qt:如何从 qscriptengine 传递数组或字典?

我创建了一个 QScriptEngine 并公开了一个可以从 js 脚本调用的对象函数。

myObj 是一个 QObject,其功能类似于...

在我的 js 代码中,我可以这样称呼它......

这可以按我的预期工作,但我找不到任何关于将数组或字典传递给这些函数的文档。例如,如果我想传递一个数组,我将如何定义 C++ 函数以便我可以做这样的事情......

会不会是这样的...

很难解决,因为当它不起作用时,呼叫似乎默默地失败了。

0 投票
1 回答
389 浏览

bit - qubit和bit的区别可以用一个简单的代码例子来解释吗?

我知道你可以玩量子计算的唯一地方是谷歌量子游乐场ibm 的量子体验。虽然第一个使用 qscript 和第二个 qasm 语言(易于学习),但它们的用法仍然与常规编程没有太大区别(除了少数特定功能)。这是维基百科的解释:

量子比特与经典比特有一些相似之处,但总体上却大不相同。量子比特的测量有两种可能的结果——通常是 0 和 1,就像比特一样。不同之处在于,虽然一个位的状态是 0 或 1,但一个量子位的状态也可以是两者的叠加。可以在一个量子位中完全编码一个位。然而,一个量子位可以保存更多信息,例如使用超密集编码最多两个位。

对于具有 n 个组件的系统,在经典物理学中对其状态的完整描述只需要 n 位,而在量子物理学中则需要 2^n - 1 个复数。

哪个或多或少很清楚。但是如何用代码示例来显示呢?

0 投票
1 回答
196 浏览

qt - 如何在 QScriptEngine 中使用 QVector

第一个:Qt 4.7

我想访问一个QVector<double>脚本内部,它是一个对象成员函数的返回值。即,我已将对象传递给脚本,它具有属性 set 和 get 函数,它们分别具有QVector<double>参数/返回值。我做了以下事情:

在它自己的标题中:

当我设置引擎时:

我的对象 ( CalcDataVector) 具有以下公共插槽(_value是受保护的成员):

我将对象发送到脚本引擎,如下所示:

我想访问脚本内 v 中的向量:

其中,由于我是 qscript 的新手,可能有一个非常明显的语法错误。请赐教!

我收到语法错误:

语法错误:解析错误。

我可以用其他方式操纵我发送的对象,所以我知道它就在那里。

编辑:我还发送与输入相同类型的输出变量。我可以执行以下操作:

但不是

0 投票
2 回答
1256 浏览

c++ - 在 Qt 安装程序框架中禁用本机 Next 按钮

我必须通过 installscript.qs 文件在我的自定义页面上禁用标准的下一步按钮。

我可以通过 .qs 脚本禁用我自己的按钮(我在 .ui 文件中创建的),如下所示:widget.myButton.setEnabled(false);

这个人表明本机按钮表示为枚举,我不能以同样的方式禁用它们。

控制器脚本手册页显示了与本机按钮的一些交互。喜欢gui.clickButton(buttons.NextButton)。我浏览了整个 gui object man 并没有发现任何有用的东西。

Qt 安装程序框架有一个本机许可证检查页面,其中包含我需要的下一步按钮逻辑,但我没有找到任何手动执行此操作的示例。(许可证页面之所以有效,是因为它的默认许可证页面和我理解的框架内的逻辑)。

最后我找到了对我有用的 isComplete() 方法,但它适用于 C++ API 而不是 qs。那么如何通过 installscript.qs 文件禁用本机按钮?

0 投票
1 回答
474 浏览

c++ - 如何返回 QList来自 Qt 脚本中使用的基于 QObject 的类方法

我正在 Qt 中开发一个使用 QScript 模块的应用程序。我正在处理的类是从 QObject 派生的,因此它将是“可编写脚本的”。其中一种方法应该返回一个双精度值列表(QList)。当我使用类的一个实例创建一个全局脚本对象时,使用 engine.newQObject(class_instance)),我可以完美地访问脚本对象的许多方法,表明该过程正在运行。我可以从脚本中调用一个返回双精度的方法,但应该返回 QList 的函数保持沉默。

知道如何实现 C++ 类的方法,以便它忠实地返回双值列表吗?

代码:

类代码(QCustomPlot 派生自 QWidget)

函数旨在返回一个双精度值列表:

(声明为 Q_INVOKABLE)

当我运行该函数时,我在脚本控制台中得到的只是:QVariant(QList)

我制作了以下测试函数,它返回一个表示双值列表的 QStringList:

(声明为 Q_INVOKABLE)

当我运行该函数时,脚本控制台有效地显示带有逗号分隔的双精度值的文本。

我还编写了一个返回单个双精度值的简单函数,它也可以工作。另一个测试函数返回一个QList<int>作品。

QList<double>所以我猜,和相应的脚本值之间没有自动转换。看起来我需要一种方法让 QScriptEngine 实例知道如何转换QList<double>为 Qt Script 变量。

谢谢

0 投票
0 回答
18 浏览

qt - QJSEngine 全局函数

目前有什么方法可以使全局功能在QJSEngine?我正在尝试将现有应用程序从旧版本移植QScriptEngine到,QJSEngine但我找不到任何方法。

当我检查 Qt 的源代码如何定义“print()”函数时,他们正在使用内部QV4::Score/ScoreObject类来做到这一点。

我还找到了关于如何在QQmlApplicationEngine via中“模拟”它的答案,rootContext()->setContextObject但这也不适用于QJSEngine.

QJSEngine不幸的是,我们需要将它迁移到QScriptEngine.

谢谢