我有一个ChartView
,其中有两个已定义的ValueAxis
,并且想显示多个QLineSeries
。数据以cxxDataProxy.mySeriesList
的形式从c ++端(通过下面的QVariantList::append(QVariant::fromValue(QLineSeries*))
对象)传递,因此它们应作为列表显示在JavaScript端。每当系列更改时,我都希望在图表中为列表中的每个LineSeries
创建一个QLineSeries
。
我天真的尝试是这样的:
ChartView{
id: _myChartView
ValueAxis { id: _valueAxis_X }
ValueAxis { id: _valueAxis_Y }
Repeater{
id: _lineSeriesRepeater
model: cxxDataProxy.mySeriesList
Component{
id: lineSeriesDelegate
LineSeries {
name: "series #"+index.toString()
axisX: _valueAxis_X
axisY: _valueAxis_Y
}
}
}
}
希望mySeriesList
中的任何更改(属性具有更改通知)将导致中继器重新构建LineSeries
的列表。当列表实际更改时,我遇到的是:
QML Component: Delegate must be of Item type
我在QML, create LineSeries at runtime的Qt论坛上看到了非常相似的问题,但没有得到答案。
感谢您的建议!
PS This post使用JavaScript回调动态添加行系列。该代码创建系列,然后逐点复制数据。也许有更直接的方式,更优雅,更易读,更可维护吗?