图表中LineSeries的中继器

时间:2019-06-09 19:20:21

标签: qt charts delegates qml repeater

我有一个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回调动态添加行系列。该代码创建系列,然后逐点复制数据。也许有更直接的方式,更优雅,更易读,更可维护吗?

0 个答案:

没有答案