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 范围内的点。
我正在寻找一些可以遵循的线索和提示,而不是一个完整的复制粘贴就绪代码。
我实现了我想要的:
通过迭代 plot->getAllGraphs();
中每个图表的所有 data()
从所有图表中获取所有记录
检查 QCPRanges 是否包含每个数据点
根据满足QCPRanges要求的索引构建QCPDataRanges
从 QCPDataRanges 构建 QCPSelection。
为循环中的每个图形设置适当的选择。
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.
这不是世界上最优化的方法,但如果不重写部分库,我想不出更好的方法。欢迎任何更好的方法
我正在开发一个带有绘图的简单 GUI,您可以在其中设置一些 x 和 y 范围。我怎样才能 select 图中所有图表中的所有项目都在这些范围内? 我试图在 mouse rectangular multi range selection 上重现与 运行 相同的算法,但我没有成功。我希望有一些我想念的更简单的方法。
示例:
假设 A 和 B 是一对 QCPRange:
QCPRange A = QCPRange(2,4);
QCPRange B = QCPRange(1,8);
我想在绘图上标记 A 和 B 范围内的点。
我正在寻找一些可以遵循的线索和提示,而不是一个完整的复制粘贴就绪代码。
我实现了我想要的:
通过迭代
plot->getAllGraphs();
中每个图表的所有 检查 QCPRanges 是否包含每个数据点
根据满足QCPRanges要求的索引构建QCPDataRanges
从 QCPDataRanges 构建 QCPSelection。
为循环中的每个图形设置适当的选择。
data()
从所有图表中获取所有记录
Note: To make it work interaction
QCP::iMultiSelect
must be set for the plot. Also you need tosetSelectable(QCP::stMultipleDataRanges)
for every graph. Otherwise you might get an unwanted behavior as a result of selection.
这不是世界上最优化的方法,但如果不重写部分库,我想不出更好的方法。欢迎任何更好的方法