如何从QML获取QVector <qint16>元素?

时间:2018-01-11 11:40:40

标签: qt qml qvector

在我的类参数中,我在qproperty下面创建了:

Q_PROPERTY(QVector <qint16> tmrAndCont READ tmrAndCont WRITE setTmrAndCont NOTIFY tmrAndContChanged)

我为获取读取属性创建了亲戚方法。 现在我有一个包含43个元素的QVector。

所以我的问题是:我可以从 QML 访问 QVector 的元素吗?

在main.cpp中,我已经声明了类,并使用engine.rootContext将它显示给QML。

Parameters::m_parameters = new Parameters();
engine.rootContext()->setContextProperty("parameters",Parameters::m_parameters);

1 个答案:

答案 0 :(得分:2)

QML没有16位整数的概念。我建议不要直接将向量作为上下文属性公开,而是将其包装在QObject派生类中,该类提供size,get和set方法,并在访问数据时隐藏常规int,揭露那个。

请注意,QML会隐式地将QVector<int>转换为JS数组,但首先,我还没有测试过它是否适用于较短的整数,其次是转换,这意味着你不会访问实际的底层数据,但是它的转换后的副本,意味着你不能设置数据,如果你有数据的本地引用,它将不会反映任何更改,因为它将引用旧的转换后的JS数组对象。 / p>