Ручной прямоугольный выбор элементов в QCustomPlot

Я работаю над простым графическим интерфейсом с графиком, где вы можете установить некоторые диапазоны x и y. Как я могу выбрать все элементы из всех графиков на графике, которые находятся в этих диапазонах? Я пытался воспроизвести те же алгоритмы, которые запускаются при выборе прямоугольников мыши из нескольких диапазонов, но у меня не получилось. Я надеюсь, что есть более простой способ, который мне не хватает.

Пример: введите здесь описание изображения

Предположим, что A и B являются парой QCPRanges:

QCPRange A = QCPRange(2,4);
QCPRange B = QCPRange(1,8);

Я хотел бы отметить точки на графике, которые находятся в диапазонах A и B.

Я ищу некоторые подсказки и советы, которым нужно следовать, а не полный код, готовый к копированию и вставке.


person Luke    schedule 03.10.2017    source источник
comment
Покажите код, который вы пробовали   -  person eyllanesc    schedule 04.10.2017
comment
@eyllanesc Я добавил свое решение. Любые лучшие способы приветствуются   -  person Luke    schedule 05.10.2017


Ответы (1)


Я добился того, что хотел:

  1. получение всех записей со всех графиков путем повторения всех data() для каждого графика в plot->getAllGraphs();

  2. проверка QCPRanges, если они содержат каждую точку данных

  3. построение QCPDataRanges на основе индексов, соответствующих требованиям QCPRange

  4. создание QCPSelection из QCPDataRanges.

  5. установка соответствующего выбора для каждого графика в цикле.

Примечание: чтобы это работало, взаимодействие QCP::iMultiSelect должно быть установлено для сюжета. Также вам нужно setSelectable(QCP::stMultipleDataRanges) для каждого графика. В противном случае вы можете получить нежелательное поведение в результате выбора.

Не самый оптимизированный способ в мире, но я не мог придумать ничего лучше, не переписав часть библиотеки. Любые лучшие способы приветствуются

person Luke    schedule 05.10.2017