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

Posted

技术标签:

【中文标题】如何从 QML 获取 QVector<qint16> 元素?【英文标题】:How to get QVector<qint16> element from QML? 【发布时间】:2018-01-11 11:40:40 【问题描述】:

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

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

我已经为 getread 属性创建了相关方法。 现在我有一个包含 43 个元素的 QVector。

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

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

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

【问题讨论】:

【参考方案1】:

QML 没有 16 位整数的概念。我建议不要将向量直接公开为上下文属性,而是将其包装在一个QObject 派生类中,该派生类提供大小、获取和设置方法,并在您访问数据时从常规int 转换并公开它。

请注意,QML 会将QVector&lt;int&gt; 隐式转换为 JS 数组,但一方面,我尚未测试这是否适用于较短的整数,其次,这将是转换,这意味着您不会访问实际的底层数据,而是它的转换副本,这意味着您无法设置数据,并且如果您对数据有本地引用,它将不会反映任何更改,因为它将引用旧的转换后的 JS 数组对象。

【讨论】:

以上是关于如何从 QML 获取 QVector<qint16> 元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 QVector<QVector<T>> 获取 QVector<T>?

如何从另一个 Qml 的 Qml 中的属性中获取值?

Qt - QVector 和模型视图 - 从 listView 获取自定义类的最佳方法是啥?

如何从 QML 旋转框中获取数据

如何将 QVector<T> 的地址动态存储在另一个 QVector<QVector<T>*> 中?

返回 QVector 的最佳方式