
QwtPicker 在一个部件上提供选择功能。
QwtPicker过滤某个部件上所有的进入 、离开、鼠标和键盘事件,并且将它们翻译成 一个选中 的点的序列。
那些点被收集的方式取决 于连接 到这个拾取器上的状态机的类型。Qwt提供咯几个预定义的用于选择功能的状态机:
•.什么也不做
QwtPickerTrackerMachine
•.多边形
QwtPickerPolygonMachine
这些状态 机能够满足 大部分 情况下 的选择点的需求,另外 还可以实现其它 的状态机。
QwtPicker使用 adjustedPoints 方法来将选中 的点翻译成一个选择(selection)。adjustedPoints是倾向于让你重写的,以便依据程序的特定需求来确定选择内容 。(比如说,某个程序 只接受固定纵横 比的矩形选择区域。)
还有一个可选项, QwtPicker支持使用矩形选区 (rubberband) 来选取点,以及使用 一个跟踪器(tracker)来显示出当前的鼠标位置。
示例
#include <qwt_picker.h>
#include <qwt_picker_machine.h>
QwtPicker *picker = new QwtPicker(widget);
picker->setStateMachine(new QwtPickerDragRectMachine);
picker->setTrackerMode(QwtPicker::ActiveOnly);
picker->setRubberBand(QwtPicker::RectRubberBand);
状态机会触发以下命令:
•.
begin()
激活/初始化选择内容。
•.
append()
添加一个新的点
•.
move()
改变上一个点的位置。
•.
remove()
删除上一个点。
•.
end()
终止选择过程,并且调用accept 以验证所选中的点。
拾取器在 begin() 和 end() 之间是活动的( isActive() )。 在活动状态,矩形选择框会显示出来,并且 ,如果trackerMode 是ActiveOnly 或AlwaysOn 的话,跟踪器也是可见的。
可使用方向键来移动光标。 可使用取消键来取消掉所有的选择内容。(QwtEventPattern::KeyPatternCode)
警告:
如果被观察的部件 的焦点策略是 QWidget::NoFocus 的话,会被设置成QWidget::WheelFocus 。如果 trackerMode() 是AlwayOn,或者在跟踪 器是活动状态的时候,那么鼠标跟踪功能也会被打开。
HxLauncher: Launch Android applications by voice commands