PointerDeviceHandler QML 类型
针对具有专用约束的指针事件的抽象处理程序。 更多信息...
导入语句 | import QtQuick |
继承 | |
继承自 | |
状态 | 初步 |
此类处于开发中,并可能发生变化。
属性
- acceptedButtons : 标志位
- acceptableDevices : 标志位
- acceptableModifiers : 标志位
- acceptablePointerTypes : 标志位
- active : 布尔值
- cursorShape : Qt::CursorShape
- dragThreshold : 整数
- enabled : 布尔值
- grabPermissions : 标志位
- margin : 实数
- parent : Item
- target : Item
信号
- canceled(eventPoint point)
- grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
详细描述
一个中间类(未注册为 QML 类型),用于处理程序,允许基于设备类型、指针类型或键盘修饰符进行筛选。
属性文档
acceptableButtons : 标志位 |
可以激活此指针处理程序的鼠标按钮。
默认情况下,该属性设置为 Qt.LeftButton。它可以设置为鼠标按钮的 OR 组合,并忽略其他按钮的事件。
例如,可以使用两个处理程序使一个控件以不同的方式响应左键和右键点击
Item { TapHandler { onTapped: console.log("left clicked") } TapHandler { acceptedButtons: Qt.RightButton onTapped: console.log("right clicked") } }
注意:在触摸屏上轻触或在图形板上的笔尖轻触模拟点击左鼠标按钮。这种行为可以通过 acceptableDevices 或 acceptablePointerTypes 进行修改。
acceptableDevices : 标志位 |
可以激活此指针处理器的指针设备类型。
默认情况下,此属性设置为 PointerDevice.AllDevices。如果您将其设置为设备类型的或运算组合,它将忽略来自不匹配设备的事件。
例如,可以使用两个处理器,使某个控件对鼠标和触笔点击和触摸屏敲击以不同的方式做出响应。
Item { TapHandler { acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad | PointerDevice.Stylus onTapped: console.log("clicked") } TapHandler { acceptedDevices: PointerDevice.TouchScreen onTapped: console.log("tapped") } }
注意:并非所有平台都能够区分鼠标和触摸板;对于那些能够区分的平台,您通常希望使鼠标和触摸板的行为相同。
acceptedModifiers : flags |
如果设置了此属性,则必须按下指定的键盘修饰符才能响应指针事件,否则忽略它们。
如果此属性设置为 Qt.KeyboardModifierMask
(默认值),则 PointerHandler 忽略修饰键。
例如,一个 Item 可以有相同类型的两个处理器,其中一个仅在按下所需的键盘修饰符时被启用。
Item { TapHandler { acceptedModifiers: Qt.ControlModifier onTapped: console.log("control-tapped") } TapHandler { acceptedModifiers: Qt.NoModifier onTapped: console.log("tapped") } }
如果您将 acceptedModifiers
设置为修饰键的或运算组合,这意味着必须按下 所有 这些修饰符才能激活处理器。
Item { TapHandler { acceptedModifiers: Qt.ControlModifier | Qt.AltModifier | Qt.ShiftModifier onTapped: console.log("control-alt-shift-tapped") } }
可用的修饰符如下
常量 | 描述 |
---|---|
NoModifier | 不允许任何修饰键。 |
ShiftModifier | 必须按下键盘上的 Shift 键。 |
ControlModifier | 必须按下键盘上的 Ctrl 键。 |
AltModifier | 必须按下键盘上的 Alt 键。 |
MetaModifier | 必须按下键盘上的 Meta 键。 |
KeypadModifier | 必须按下计算器按钮。 |
GroupSwitchModifier | 仅 X11(除非在 Windows 中通过命令行参数激活)。必须按下键盘上的模式切换键。 |
KeyboardModifierMask | 处理器不关心哪个修饰符被按下。 |
如果您需要比使用多个处理器的多个修饰标志组合所能实现的行为更复杂的操作,则可以在 JavaScript 代码中检查修饰符
Item { TapHandler { onTapped: switch (point.modifiers) { case Qt.ControlModifier | Qt.AltModifier: console.log("CTRL+ALT"); break; case Qt.ControlModifier | Qt.AltModifier | Qt.MetaModifier: console.log("CTRL+META+ALT"); break; default: console.log("other modifiers", point.modifiers); break; } } }
另请参阅:Qt::KeyboardModifier。
acceptedPointerTypes : flags |
可以激活此指针处理器的指针工具类型(手指、触笔、橡皮擦等)。
默认情况下,此属性设置为 PointerDevice.AllPointerTypes。如果您将其设置为设备类型的或运算组合,它将忽略来自不匹配 设备 的事件。
例如,可以通过两个处理器使控件以某种方式对鼠标、触摸和触笔点击做出响应,但如果在绘图板上用橡皮擦工具敲击并删除自己,则可以通过两个处理器来实现。
Rectangle { id: rect TapHandler { acceptedPointerTypes: PointerDevice.Generic | PointerDevice.Finger | PointerDevice.Pen onTapped: console.log("clicked") } TapHandler { acceptedPointerTypes: PointerDevice.Eraser onTapped: rect.destroy() } }
active : bool |
cursorShape : Qt::CursorShape |
当鼠标在 父项 上悬停并且 active 为 true
时,此属性将保留要显示的指针形状。
可用的指针形状有
- Qt.ArrowCursor
- Qt.UpArrowCursor
- Qt.CrossCursor
- Qt.WaitCursor
- Qt.IBeamCursor
- Qt.大小垂直光标
- Qt.大小水平光标
- Qt.大小对角线光标
- Qt.方向对角线光标
- Qt.所有方向光标
- Qt.空白光标
- Qt.分割垂直光标
- Qt.分割水平光标
- Qt.指向光标
- Qt.禁止光标
- Qt.这是什么光标
- Qt.忙碌光标
- Qt.开放光标手
- Qt.闭合光标手
- Qt.拖动复制光标
- Qt.拖动移动光标
- Qt.拖动链接光标
默认值未设置,允许父项的 光标 出现。将此属性重置为未定义可以将其重置到相同的初始状态。
注意:当此属性尚未设置或设置为 undefined
时,读取的值将返回 Qt.ArrowCursor
。
请参阅:Qt::CursorShape,QQuickItem::cursor() 以及 HoverHandler::cursorShape。
拖动阈值 : int |
用户必须拖动 eventPoint 的像素距离,以将其视为拖动手势。
默认值取决于平台和屏幕分辨率。将其设置为未定义可以将其重置为默认值。不同处理器的拖动手势开始时的行为各不相同。
启用 : bool |
如果禁用 PointerHandler,则它将拒绝所有事件且不会发出任何信号。
抓取权限 : 标志 |
此属性指定在此处理器逻辑决定接管独占抓取,或当请求批准另一个处理器的抓取接管或取消时,的权限。
常量 | 描述 |
---|---|
PointerHandler.TakeOverForbidden | 此处理器不从任何类型的项或处理器那里夺取,也不给予抓取权限。 |
PointerHandler.CanTakeOverFromHandlersOfSameType | 此处理器可以从同一类的另一个处理器那里夺取独占抓取。 |
PointerHandler.CanTakeOverFromHandlersOfDifferentType | 此处理器可以从任何类型的处理器那里夺取独占抓取。 |
PointerHandler.CanTakeOverFromItems | 此处理器可以从任何类型的项那里夺取独占抓取。 |
PointerHandler.CanTakeOverFromAnything | 此处理器可以从任何类型的项或处理器那里夺取独占抓取。 |
PointerHandler.ApprovesTakeOverByHandlersOfSameType | 此处理器允许同一类别的另一个处理器夺取抓取。 |
PointerHandler.ApprovesTakeOverByHandlersOfDifferentType | 此处理器允许任何类型的处理器夺取抓取。 |
PointerHandler.ApprovesTakeOverByItems | 此处理器允许任何类型的项夺取抓取。 |
PointerHandler.ApprovesCancellation | 此处理器将允许将其抓取设置为零。 |
PointerHandler.ApprovesTakeOverByAnything | 此处理器允许任何类型的项或处理器夺取抓取。 |
默认值为 PointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType | PointerHandler.ApprovesTakeOverByAnything
,这允许大多数接管场景,但避免了例如两个 PinchH handlers 夺取相同的触摸点等情况。
边缘 : real |
parent : Item |
这是处理程序作用的范围,即在Item中声明的元素。处理程序将代表此项处理事件,这意味着如果至少有一个其事件点发生在项内部,则指针事件相关。最初目标是相同的,但它可以被重新分配。
另请参阅目标和QObject::parent。
target : Item |
处理程序将要操作的元素。
默认情况下,它与parent相同,即处理程序声明的项内。但是,有时将目标设置为一个不同的项是很有用的,以处理一个项内的事件但操作另一个;或设置为null
,以取消默认行为并执行其他操作。
信号文档
canceled(eventPoint point) |
如果此处理程序已抓取给定的点,当其他指针处理程序或项抓取时,此信号会被发出。
注意:相应的处理程序是onCanceled
。
grabChanged(PointerDevice::GrabTransition transition, eventPoint point) |
当抓取以某种方式发生变化与此处理程序相关时,发出此信号。
transition(动词)说明了发生了什么情况。 point(对象)是所抓取或未抓取的点。
transition的合法值有
常量 | 描述 |
---|---|
PointerDevice.GrabExclusive | 此处理程序已接受处理点的主要责任。 |
PointerDevice.UngrabExclusive | 此处理程序已放弃其之前的独家抓取。 |
PointerDevice.CancelGrabExclusive | 此处理程序的独家抓取已被接管或取消。 |
PointerDevice.GrabPassive | 此处理程序已获取被动抓取,以监视点。 |
PointerDevice.UngrabPassive | 此处理程序已放弃其之前的被动抓取。 |
PointerDevice.CancelGrabPassive | 此处理程序的先前被动抓取异常终止。 |
注意:相应的处理程序是onGrabChanged
。
© 2024 Qt公司 Ltd。© 本文档中包含的文档贡献归其各自所有者所有。本文档是在自由软件基金会出版的GNU自由文档许可协议版本1.3的条款下提供的。Qt及其相应的标志是芬兰和/或世界各地Qt公司的商标。商标。所有其他商标归其各自所有者所有。