将参数传递给外部Qt脚本

时间:2015-02-19 04:57:28

标签: qt parameters scripting

我是Qt Script的新手。我有一个工作"占位符"不带参数的脚本,从Qt应用程序调用。现在我想添加参数,特别是QBitArray(或其内容的一些表示)和一些整数。有谁知道怎么做?

This question涉及使用脚本包装本机函数,以便可以调用本机函数(带参数)。但我正在反过来 - 从Qt应用程序调用外部脚本并提供参数。

我已经阅读了official docs,它也讨论了函数包装,但除非我遗漏了一些内容,否则我只会看到它讨论我没有参数的脚本的用例。

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

1 个答案:

答案 0 :(得分:0)

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

第二部分展示了如何传递参数。这更简单。这是相关位的副本/过去:

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

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

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