将参数传递给外部 Qt 脚本

Passing parameters to external Qt Script

我是 Qt 脚本的新手。我有一个工作的 "placeholder" 脚本,它不带任何参数并从 Qt 应用程序调用。现在我想添加参数,特别是 QBitArray(或其内容的某种表示)和一些整数。有人知道怎么做吗?

This question 处理用脚本包装原生函数,以便调用原生函数(带参数)。但我正在做相反的事情——从 Qt 应用程序调用外部脚本并提供参数。

我读过 official docs,它也讨论了函数包装,但除非我遗漏了什么,否则我只看到它讨论了我的无参数脚本用例。

有谁知道如何将参数从 Qt 应用程序传递到外部 Qt 脚本?

啊,我想通了。 QScriptValue::call() 文档中有一些代码展示了它是如何完成的。老实说,我不知道它为什么有效,但现在还可以。 该代码的前半部分展示了如何使用设置为 QScriptValues 的脚本并调用一个 QScriptValue 并将另一个作为参数。

第二部分展示了一般情况下如何传递参数。这更简单。这是相关位的 copy/past:

QScriptEngine engine;
QScriptValue global = engine.globalObject();
engine.evaluate("function cube(x) { return x * x * x; }");
QScriptValue cube = global.property("cube");
QScriptValueList args;
args << 3;
qDebug() << cube.call(QScriptValue(), args).toNumber(); // 27

现在,QScript 不需要形式参数。您可以传递可变数量的参数,例如通过在循环中重复 args <<,并使用特殊参数 [] 属性 来引用它们,如下所示:

function foo()
{
  return arguments[0] + arguments[1];
}