我创建了一个程序,从Internet读取库存数据(时间序列)并将其显示在QML ChartView中 . 在我添加了我想要的所有系列之后,我可以通过单击按钮删除它们 .
我想知道是否可以通过点击系列中的任何一点来删除线系列?
我正在动态添加这个系列:
// stockID is sent from C++ when the timeSeriesReady signal is emitted
var chartViewSeries = chartView.createSeries(ChartView.SeriesTypeLine, stockID, dateTimeAxis_chartView_xAxis, valueAxis_chartView_yAxis);
// Set chartViewSeries (AbstractSeries/LineSeries) properties
chartViewSeries.onClicked.connect(lineSeriesClicked);
chartViewSeries.onHovered.connect(lineSeriesHovered);
stockChart.setLineSeries(chartViewSeries);
我不想过多地张贴我的帖子所以我不会发布所有文件,但是:
-
dateTimeAxis_chartView_xAxis是主要ChartView QML typ中的DateTimeAxis QML类型,带有id:chartView
-
valueAxis_chartView_yAxis是ChartView QML内部的ValueAxis QML类型,带有id:chartView
-
stockChart是从C导入的StockChart QML类型的ID
-
lineSeriesClicked是这个函数:
function lineSeriesClicked(lineSeriesPoint){
console.log(lineSeriesPoint);
}
- lineSeriesHovered是这个函数:
function lineSeriesHovered(lineSeriesPoint, isHovered){
if(isHovered){
var date = new Date(lineSeriesPoint.x);
console.log(date.getFullYear() + "-" + (((date.getMonth()+1) < 10) ? ("0" + (date.getMonth()+1).toString()) : (date.getMonth()+1)) + "-" + (((date.getDate()) < 10) ? ("0" + (date.getDate()).toString()) : (date.getDate())) + " -> " + lineSeriesPoint.y);
}
}
现在,在日志中我看到所有正确的数据,例如,当盘旋时:
qml: 2017-08-29 -> 64.91115963918442
点击时:
qml: QPointF(1.50432e+12, 65.0453)
查看XYSeries QML Type(https://doc.qt.io/qt-5/qml-qtcharts-xyseries.html#clicked-signal),我使用的点击信号只传递一个点 .
有没有办法获得获得点数据的系列名称能够删除这个系列?也许通过某种上下文访问或“this”关键字?
非常感谢你!!!
1 回答
我不知道你是否解决了这个问题,但仅仅是为了文档...我可以使用model-view-delegate来解决它 . 在我的例子中,我使用传感器数据生成图形,我希望我可以通过Series'标签连接不同的图形(例如饼图和线条) . 我可以使用这个model-view-delegate透视图来完成它 . 我这样想出来:
X轴是24个值,因为我正在映射一天 . 我希望这个帮助=)