我想在QML ChartView中动态更改LineSeries。我正在使用Qt 5.7 为此,我有一个变量'updateChart',它使用removeAllSeries()和createSeries()
触发替换现有的LineSeries有时,需要使用辅助轴(右轴)显示LineSeries。 ChartView createSeries()不允许为LineSeries分配一个右轴,从文档中我找不到替代方案。
此外,在调用createSeries方法之前,您需要已经有一个轴。 因此,我在ChartView中声明了3个轴(X,Y left,Y right),以便在createSeries调用中使用它们。最小/最大值在另一个视图中修改并保存在'chartContext'中。 创建后,我将axisY更改为axisYRight。
问题是我的ChartView在两侧显示相同的轴(最小/最大值)。当我更改其中一个最小值/最大值时,它会更新到最后一个值,甚至将左轴的最小值与右轴的最大值混合。
我该如何避免这种情况? 以下是我的(缩短的)代码: chartContext和dataModel是C ++上下文
ChartView
{
id: linechart;
anchors.fill: parent;
property var updateChart: chartContext.updateChart;
title: chartContext.chartTitle;
antialiasing: true;
ValueAxis {
id: xAxis;
min: chartContext.minXAxis;
max: chartContext.maxXAxis;
}
ValueAxis {
id: yAxis;
min: chartContext.minYAxis;
max: chartContext.maxYAxis;
}
ValueAxis {
id: yAxis2;
min: chartContext.minYAxis2;
max: chartContext.maxYAxis2;
}
onUpdateChartChanged: {
linechart.removeAllSeries();
for (var i = 0; i < dataModel.numberOfSeries; ++i) {
var lineSeries;
if (dataModel.axisLocation(i) == "Right") {
lineSeries = linechart.createSeries(ChartView.SeriesTypeLine, dataModel.getYLabel(i), xAxis);
lineSeries.axisYRight = yAxis2;
}
else {
lineSeries = linechart.createSeries(ChartView.SeriesTypeLine, dataModel.getYLabel(i), xAxis, yAxis);
}
}
}
}