迭代QML XYSeries中的点

时间:2016-01-05 18:32:51

标签: c++ qt qt5

我试图迭代Qt 5.5 QtCharts LineSeries类型中的点,这些点继承自XYSeries

我尝试了一个简单的for循环,但我找不到确定系列中点数的方法:

for (var i=0; i < my_line_series.contentItem.children.length; ++i) {
    // do something with the index
}

不幸的是,似乎以下任何一个都不是LineSeries的成员:

  • contentItem
  • children
  • length
  • count
  • size

或者,我可以尝试迭代该系列,直到在给定索引处无法访问 - 但用于访问给定索引处的点的方法at()返回{{ 1}}如果索引无效,并且完全有可能我的(0,0)中有真正的(0,0)点。

....那么是否有可能在纯QML中执行此迭代 (参见编辑)?

编辑:底层C ++类型QLineSeries提供LineSeries方法,因此可以将count() QML类型传递给{ {1}}方法获取LineSeries并以此方式获取大小。不过,这似乎是一个简单问题的荒谬解决方法。

2 个答案:

答案 0 :(得分:2)

可以使用Qt 5.7。

有一个“count”属性(不是函数)允许你使用QML / JS中的“at”函数迭代LineSeries的点。

可悲的是,没有记录,我做了一个疯狂的猜测并且很幸运,但我认为当你尝试使用Qt 5.5时,该属性不存在。

示例:

for(var i = 0; i < lineSeries.count; ++i)
    console.log(lineSeries.at(i));

答案 1 :(得分:0)

Qt 5.9+(可能是5.8?)

现在有count property个信息。

Qt 5.7

根据Oxyd的回答,count属性存在于5.7版本中,但未包含在文档中。

Qt 5.6及更早版本

QML LineSeries类型根本不提供对涉及该系列的任何非平凡任务所需的方法的访问。

解决方案是通过将LineSeries QML类型传递给采用Q_INVOKABLE的{​​{1}}方法,在C ++中实现这些任务。