Перебор элементов QLineSeries и их точек

#c #qt #qt5

#c #qt #qt5

Вопрос:

Мне нужно отсортировать QLineSeries и точки внутри них по оси y. Я новичок в c и qt, поэтому я попытался

 QLineSeries* series = lineSeriesMap.value(key);
qSort(series->points().begin()->y(),series->points().end()->y());
  

Но это выдает мне illegal indirection ошибку при qalgorithms.h

Я знаю, что это может быть что-то простое, но мне нужно сделать это из-за работы

Ответ №1:

Что вам следует сделать, так это получить копию точек, упорядочить точки и заменить точки в исходном ряду

 QVector<QPointF> points = series->pointsVector();
std::sort(points.begin(), points.end(), [](const QPointF amp; p1, const QPointF amp; p2) {
    return p1.y() > p2.y();
});
series->replace(points);
  

Комментарии:

1. Могу я спросить вас еще кое о чем? Как мне скопировать QLineSeries * series в новый объект?

Ответ №2:

C 20

 auto points { series->pointsVector() }; // move ctr
std::ranges::sort(points, {}, amp;QPointF::y); // #include <ranges>
series->replace(points);