首先: 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)
答案 0 :(得分:0)
所以......结果是“in”是javascript / ECMA中的保留字!