我试图迭代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
并以此方式获取大小。不过,这似乎是一个简单问题的荒谬解决方法。
答案 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)
现在有count
property个信息。
根据Oxyd的回答,count
属性存在于5.7版本中,但未包含在文档中。
QML LineSeries
类型根本不提供对涉及该系列的任何非平凡任务所需的方法的访问。
解决方案是通过将LineSeries
QML类型传递给采用Q_INVOKABLE
的{{1}}方法,在C ++中实现这些任务。