The QChart contains some series.
Is it possible to retrieve the list of points that are currently visible on the chart while the chart is zoomed in ?
Means getting a list/vector of point of the actually displayed points.
Digested and simplified from Kuba answer:
QList<QVector<QPointF>> XXX::getDisplayedPoints(QChart *chart)
{
QList<QVector<QPointF>> result;
foreach (QAbstractSeries * series, chart->series())
{
QVector<QPointF> vector;
auto inScene = chart->plotArea();
auto inChart = chart->mapFromScene(inScene);
auto inChartRect = inChart.boundingRect();
auto inItem1 = chart->mapToValue(inChartRect.topLeft(), series);
auto inItem2 = chart->mapToValue(inChartRect.bottomRight(), series);
QRectF rect = QRectF(inItem1, inItem2).normalized();
const QVector<QPointF> points = static_cast<QLineSeries*>(series)->pointsVector();
std::copy_if(points.begin(), points.end(), std::back_inserter(vector),
[rect](QPointF const &p) { return rect.contains(p); });
result.append(vector);
}
return result;
}
Can be called from signal
connect(static_cast<QValueAxis *>(m_chart->axisX()), &QValueAxis::rangeChanged, this, &XXX::on_zoomUpdated);