有没有一种方法可以在QML ChartView中对序列使用绝对位置和相对位置?

时间:2019-01-14 15:21:05

标签: qt qml

我想确保在下面的代码中,红线始终位于最上方,qml是否具有允许我执行此操作的任何功能,例如相对或绝对定位选项。

ChartView{
    anchors.fill: parent
    id: chart

    ValueAxis{
        id: axisY
        min: 0
        max: 1
    }
    ValueAxis{
        id: axisX
        min: 0
        max: 1
    }

    property var redSeries;
    property var blackSeries;

    Component.onCompleted: {
        redSeries = chart.createSeries(chart.SeriesTypeLine, "red", axisX, axisY);
        redSeries.color = "red";
        redSeries.append(0.3,0);
        redSeries.append(0.3,1);
        redSeries.width = 3;
    }

    Timer{
        interval: 1000
        running: true
        triggeredOnStart : false

        onTriggered: {

            chart.blackSeries = chart.createSeries(chart.SeriesTypeLine, "black", axisX, axisY);
            chart.blackSeries.color = "black";
            chart.blackSeries.append(0,0.5);
            chart.blackSeries.append(1,0.5);
            chart.blackSeries.width = 3;
        }

    }
}

编辑:

此刻正在显示的是第一张图像中的内容,但是我希望在显示第二张图像的同时仍生成红线之后的第二条黑线

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

很抱歉造成误会。我已经考虑过“ top”是y轴的顶部,而不是“ z”-)。至于这个问题,我没有找到任何解决方案。没有任何方法可以控制序列的z顺序。我看到的唯一愚蠢的解决方法是删除红线,并在添加黑线之后一直添加。

可能是这样的:

ChartView {
    ...
    Timer {
        ... 
        onTriggered: {
            chart.blackSeries = chart.createSeries(chart.SeriesTypeLine, "black", axisX, axisY);

            ...

            chart.removeSeries(chart.redSeries);
        }
    }
    onSeriesRemoved: {
        var newSeries = chart.createSeries(chart.SeriesTypeLine, "red", axisX, axisY);
        newSeries.color = "red";
        for(var i = 0;i <series.count;i ++)
        {
            var p = series.at(i);
            newSeries.append(p.x, p.y);
        }
        chart.redSeries = newSeries;
    }