0

第一个:Qt 4.7

我想访问一个QVector<double>脚本内部,它是一个对象成员函数的返回值。即,我已将对象传递给脚本,它具有属性 set 和 get 函数,它们分别具有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)
4

1 回答 1

0

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

于 2017-06-28T16:04:22.873 回答