QCustomPlot 中项目的手动矩形选择

Manual rectangular selection of items in QCustomPlot

我正在开发一个带有绘图的简单 GUI,您可以在其中设置一些 x 和 y 范围。我怎样才能 select 图中所有图表中的所有项目都在这些范围内? 我试图在 mouse rectangular multi range selection 上重现与 运行 相同的算法,但我没有成功。我希望有一些我想念的更简单的方法。

示例:

假设 A 和 B 是一对 QCPRange:

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

我想在绘图上标记 A 和 B 范围内的点。

我正在寻找一些可以遵循的线索和提示,而不是一个完整的复制粘贴就绪代码。

我实现了我想要的:

  1. 通过迭代 plot->getAllGraphs();

  2. 中每个图表的所有 data() 从所有图表中获取所有记录
  3. 检查 QCPRanges 是否包含每个数据点

  4. 根据满足QCPRanges要求的索引构建QCPDataRanges

  5. 从 QCPDataRanges 构建 QCPSelection。

  6. 为循环中的每个图形设置适当的选择。

Note: To make it work interaction QCP::iMultiSelect must be set for the plot. Also you need to setSelectable(QCP::stMultipleDataRanges) for every graph. Otherwise you might get an unwanted behavior as a result of selection.

这不是世界上最优化的方法,但如果不重写部分库,我想不出更好的方法。欢迎任何更好的方法