迭代 QML XYSeries 中的点
Iterate over points in QML XYSeries
我正在尝试迭代 Qt 5.5 QtCharts LineSeries
类型中的点,它继承自 XYSeries
。
我尝试了一个简单的 for
循环,但我想不出一种方法来确定系列中的点数:
for (var i=0; i < my_line_series.contentItem.children.length; ++i) {
// do something with the index
}
不幸的是,以下 none 似乎是 LineSeries
的成员:
contentItem
children
length
count
size
或者,我可以尝试遍历系列,直到在给定索引处没有访问点——但是用于访问给定索引处的点的方法,at()
,returns (0,0)
如果索引无效,完全有可能我的LineSeries
.
中有真实的(0,0)
点
...那么是否可以在纯 QML 中进行此迭代(请参阅编辑)?
编辑: 底层 C++ 类型 QLineSeries
提供了 count()
方法,因此可以将 LineSeries
QML 类型传递给Q_INVOKABLE
方法采用 QAbstractSeries*
并以这种方式获得大小。不过,对于一个简单的问题来说,这似乎是一种荒谬的解决方法。
Qt 5.9+(也许是 5.8?)
现在 count
property 包含此信息。
Qt 5.7
根据 Oxyd 的回答,count
属性 存在于版本 5.7 中,但未包含在文档中。
Qt 5.6 及更早版本
QML LineSeries
类型根本不提供对涉及该系列的任何重要任务所需的方法的访问。
解决方案是通过将 LineSeries
QML 类型传递给采用 QAbstractSeries*
.
的 Q_INVOKABLE
方法,在 C++ 中实现这些任务
Qt 5.7 可以实现。
有一个 "count" 属性(不是函数)允许您使用 QML / JS 中的 "at" 函数迭代 LineSeries 的点。
遗憾的是它没有记录在案,我胡乱猜测并且很幸运,但我想当您尝试使用 Qt 5.5 时 属性 不存在。
示例:
for(var i = 0; i < lineSeries.count; ++i)
console.log(lineSeries.at(i));
我正在尝试迭代 Qt 5.5 QtCharts LineSeries
类型中的点,它继承自 XYSeries
。
我尝试了一个简单的 for
循环,但我想不出一种方法来确定系列中的点数:
for (var i=0; i < my_line_series.contentItem.children.length; ++i) {
// do something with the index
}
不幸的是,以下 none 似乎是 LineSeries
的成员:
contentItem
children
length
count
size
或者,我可以尝试遍历系列,直到在给定索引处没有访问点——但是用于访问给定索引处的点的方法,at()
,returns (0,0)
如果索引无效,完全有可能我的LineSeries
.
(0,0)
点
...那么是否可以在纯 QML 中进行此迭代(请参阅编辑)?
编辑: 底层 C++ 类型 QLineSeries
提供了 count()
方法,因此可以将 LineSeries
QML 类型传递给Q_INVOKABLE
方法采用 QAbstractSeries*
并以这种方式获得大小。不过,对于一个简单的问题来说,这似乎是一种荒谬的解决方法。
Qt 5.9+(也许是 5.8?)
现在 count
property 包含此信息。
Qt 5.7
根据 Oxyd 的回答,count
属性 存在于版本 5.7 中,但未包含在文档中。
Qt 5.6 及更早版本
QML LineSeries
类型根本不提供对涉及该系列的任何重要任务所需的方法的访问。
解决方案是通过将 LineSeries
QML 类型传递给采用 QAbstractSeries*
.
Q_INVOKABLE
方法,在 C++ 中实现这些任务
Qt 5.7 可以实现。
有一个 "count" 属性(不是函数)允许您使用 QML / JS 中的 "at" 函数迭代 LineSeries 的点。
遗憾的是它没有记录在案,我胡乱猜测并且很幸运,但我想当您尝试使用 Qt 5.5 时 属性 不存在。
示例:
for(var i = 0; i < lineSeries.count; ++i)
console.log(lineSeries.at(i));