如何在QScriptEngine中使用QVector

时间:2017-06-28 15:17:02

标签: qt qscript

首先: Qt 4.7

我想在脚本中访问QVector<double>,这是对象成员函数的返回值。即我已经将对象传递给了脚本,并且它具有属性集和获取函数,这些函数分别具有QVector<double>作为参数/返回值。 我做了以下事情:

在自己的标题中:

Q_DECLARE_METATYPE(QVector<double>)

当我设置引擎时:

_engine = new QScriptEngine()
qScriptRegisterSequenceMetaType< QVector<double> >(_engine);

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

QVector<double> value() { return _value; }
void value(QVector<double> data) { _value = data; } 

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

CalcDataVector *v = new CalcDataVector(); // paraphrasing.. 
QObject *object = v;
QScriptValue value = engine()->newQObject(object);
engine()->globalObject().setProperty("in", value);

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

var test  = in.value()

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

我收到语法错误:

  

语法错误:解析错误。

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

编辑:我还发送一个与输入相同类型的输出变量。我可以做到以下几点:

var test = [ 100, 200, 300 ]
out.value(test)

但不是

var test = [ 100, 200, 300 ]
in.value(test)

1 个答案:

答案 0 :(得分:0)

所以......结果是“in”是javascript / ECMA中的保留字!