Я создал программу, которая считывает данные об акциях (временные ряды) из Интернета и отображает их в 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 - это QML-тип DateTimeAxis внутри основного QML-типа ChartView с идентификатором: chartView
- valueAxis_chartView_yAxis - это QML-тип ValueAxis внутри основного QML-типа ChartView с идентификатором: chartView
- stockChart - это идентификатор типа StockChart QML, импортированный из C ++.
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)
Рассмотрение типа QML XYSeries (https://doc.qt.io/qt-5/qml-qtcharts-xyseries.html#clicked-signal), сигнал нажатия, который я использую, передает только точку a.
Есть ли способ получить имя серии линий, из которых были получены данные точки, чтобы можно было удалить эту серию? Возможно, через какой-то контекстный доступ или ключевое слово «это»?
Большое Вам спасибо!!!