【问题标题】:How to get QVector<qint16> element from QML?如何从 QML 获取 QVector<qint16> 元素?
【发布时间】: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);

【问题讨论】:

    标签: qt qml qvector


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-05
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 2021-08-31
      • 1970-01-01
      相关资源
      最近更新 更多