QCustomPlot之用户交互

QCustomPlot提供了丰富的用户交互功能,包括范围操作和选择机制。用户可以通过鼠标拖拽或滚轮来改变坐标轴范围,使用QCP::iRangeDrag和QCP::iRangeZoom标志激活这些功能。此外,用户可以选择Plot上的各个部件,如坐标轴和曲线图,通过QCP::iSelect(...)交互标志控制选择。当选中状态改变时,对象的外观也会相应改变。QCustomPlot还发出多种用户交互信号,如mousePress和plottableClick,方便开发者响应用户的操作。
摘要由CSDN通过智能技术生成
User interactions用户交互


QCustomPlot提供多种内置的用户交互。它们大致可以分为
1)范围操作通过鼠标拖拽或者滚动鼠标齿轮
2)通过点击选择Plot实体。
3)用户点击到Plot实体上发出信号
Range Manipulation范围操作
对用户操作坐标轴默认的方法是通过执行一个在QCPAxisRect上的拖拽操作。为了能够使得在QCustomPlot widget上进行拖拽,需要将QCP::iRangeDrag添加到当前允许的交互里。这可以使用customPlot->setInteraction(QCP::iRangeDrag,true)设置。只是为了能够在一个方向上进行拖拽,使用QCPAxisRect::setRangeDrag并且指定是Qt::Vertical或者Qt::Horizontal。默认两个方向Qt::Vertical|Qt::Horizontal。
在拖拽操作期间,被配置的坐标轴通过QCPAxisRect::setRangeDragAxes实时更新它们的范围,自动引起Replot。这给用户一种移动plot坐标轴平面的印象,通过用鼠标抓取。最初,坐标轴抓取的范围通过配置矩形的下和左轴。QCustomPlot默认的坐标轴矩形是QCustomPlot::xAxis和QCustomPlot::yAxis.


为了改变范围的大小,放大或者缩小Plot,用户可能使用鼠标齿轮。这种行为被交互标志QCP::iRangeZoom控制,需要通过QCustomPlot::setInteraction来激活。就像范围拖拽,放大或者缩小也可能选中某一个单独的轴或者方向,查看QCPAxisRect::setRangeZoomAxes和QCPAxisRect::SetRangeZoom.另外扩展因子可以使用QCPAxisRect::setRangeZoomFactor来控制。在常见的鼠标硬件上,一个鼠标齿轮步长对应于这个因子应用到坐标轴范围。如果因子比它大,向前滚动齿轮是减小并且向后滚动是增大。为了改变这种行为,设置鼠标齿轮的放大缩小因子比它小但是比零大。缩放总是以Plot上鼠标位置为中心变化。这意味着指向光标并且滚动鼠标齿轮被允许缩放到这个特性。


The Selection Mechanism选择机制
QCustomPlot提供一个选择机制允许用户选择在Plot上的每个部件,比如坐标轴和曲线图。在Plot里某一种确定的实体能否被选中是被交互标志控制的,从QCP::iSelect(...)开始。例如设置customPlot->setInteraction(QCP::iSelectPlottables,true),将允许用户选择Plottables通过点击它们。查看QCP::Interaction文档为所有的交互标志。
为了允许多个对象同时被选中,设置QCP::iMultiSelect交互标志。然后用户就可以连续地选择多个多想了通过按住多选键(QCustomPlot::setMultiSelectModifier)默认是Ctrl.
Controlling individual selectability and selection state
选择能力可以更进一步的微调通过使用setSelectable函数在单独的对象上。例如如果调用了thatGraph->setSelectalbe(fasle),在Plot上一个指定的graph将不能被用户选中。选中状态可以通过setSelected函数以编程的方式进行修改。甚至用户选择能力被禁用,也可以以编程的方式修改选择状态。
Appearance of selected objects
一个被选中的对象通常用不同的画笔,画刷,字体来显示。这可以通过方法来配置,比如QCPGraph::setSelectedPen,QCPGraph::setSelectedBrush,QCPAxis::setSelectedLabelFont,QCPAxis::setSelectedBasePen,QCPItemText::setSelectedColor,列举一些。可以看出,它们被命名像原始的属性但是带了Selected前缀。
Multi-Part objects
一些对象比如坐标轴和图例有一个更复杂的外观,这样只为选择设置单个的布尔值是不足够的。在这种情况下,选择能力和选择状态是SelectablePart标志的一个或组合。每个多选择丁香定义它自己的SelectablePart类型。
例如QCPAxis从概念上讲分为三部分:坐标轴主干带有刻度标记,刻度标签和坐标轴标签。由于这三部分都可以独立被选中,QCPAxis::SelectablePart定义QCPAxis::spNone, QCPAxis::spAxis, QCPAxis::spTickLabels和QCPAxis::spAxisLabel.为了使得坐标轴主干和刻度标签可以被选中但是坐标标签不可以,可以调用theAxis->setSelectableParts(QCPAxis::spAxis|QCP::spTickLabels).为了控制当前的多个对象的选中状态,使用QCPAxis::setSelectedParts方法。


Reacting to a selection change
在选择改变,每个对象都发出一个叫做selectionChanged的信号。它不关心改变室友用户还是编程调用setSelected/setSelectedParts导致。
如果Plot中一个选择被用户交互改变,QCustomPlot将发出QCustomPlot::selectionChangedByUser信号。在与信号相连的槽里,你可以检查特定对象的选择状态并且做出反映。QCustomPlot::selectdPlottables,selectedItems,selectedAxes和selectedLegends可能是游泳的检索选中的对象。
User interaction singals
独立的选择机制,QCustomPlot根据用户交互发出各种各项的信号。最低级的是QCustomPlot::mouseDoubleClick,mousePress,mouseMove,mouseRelease和mouseWheel信号。当QCustomPlot widget类似的事件发生时它们被发射。注意最简单的方法是子类化QCustomPlot并且实现事件接口用相同的名字。如果你不想子类化QCustomPlot这些信号允许很容易的获取用户交互为了简单的任务。
这也有更高级的信号,报告在Plot上特定对象的单击和双击,QCustomPlot::plottableClick,plottableDoubleClick, itemClick, itemDoubleClick, axisClick, axisDoubleClick, legendClick, legendDoubleClick, titleClick, 和 titleDoubleClick。所有的这些信号报道出那个对象被单击还有关联的鼠标事件。
在完整包包括一个使用了交互系统各方面的工程实例。它还演示了为了适应需要如何调整行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值