在我的类参数中,我在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);
答案 0 :(得分:2)
QML没有16位整数的概念。我建议不要直接将向量作为上下文属性公开,而是将其包装在QObject
派生类中,该类提供size,get和set方法,并在访问数据时隐藏常规int
,揭露那个。
请注意,QML会隐式地将QVector<int>
转换为JS数组,但首先,我还没有测试过它是否适用于较短的整数,其次是转换,这意味着你不会访问实际的底层数据,但是它的转换后的副本,意味着你不能设置数据,如果你有数据的本地引用,它将不会反映任何更改,因为它将引用旧的转换后的JS数组对象。 / p>