MultiPointTouchArea QML 类型
使处理多个触摸点成为可能。 更多信息...
导入声明 | import QtQuick |
继承 |
属性
- maximumTouchPoints : int
- minimumTouchPoints : int
- mouseEnabled : bool
- touchPoints : list<TouchPoint>
信号
- canceled(list<TouchPoint> touchPoints)
- gestureStarted(GestureEvent gesture)
- pressed(list<TouchPoint> touchPoints)
- released(list<TouchPoint> touchPoints)
- touchUpdated(list<TouchPoint> touchPoints)
- updated(list<TouchPoint> touchPoints)
详细描述
MultiPointTouchArea 是一个用于跟踪多个触摸点的不可见项。
使用 Item::enabled 属性来启用和禁用触摸处理。当禁用时,触摸区域对鼠标和触摸事件来说是透明的。
默认情况下,鼠标将被处理为单个触摸点,并且位于触摸区域下的项将不会接收到鼠标事件,因为触摸区域正在处理它们。但是如果将 mouseEnabled 属性设置为 false,它将变得对鼠标事件透明,这样就可以使用另一个鼠标敏感的 Item(如 MouseArea)来单独处理鼠标交互。
MultiPointTouchArea 可以以两种方式使用
- 设置
touchPoints
来提供可以绑定的具有属性的触摸点对象 - 使用 onTouchUpdated、onPressed、onUpdated 和 onReleased 处理器
虽然 MultiPointTouchArea 可以 排他地拥有某些触摸点,但也可以同时激活多个 MultiPointTouchArea,每个都在不同的触摸点集合上操作。
参见 TouchPoint.
属性文档
这些属性包含要由触摸区域处理的触摸点范围。
这些便利性允许您拥有嵌套的MultiPointTouchAreas,一个处理两只手指的触摸,另一个处理三只手指的触摸。
默认情况下,处理区域内所有的触摸点。
如果mouseEnabled为true,则鼠标的行为像一个触摸点,因此它也受到以下约束:例如,如果maximumTouchPoints为两个,则可以使用鼠标作为一只触摸点,手指作为另一只触摸点,总共两个。
mouseEnabled : bool |
此属性控制MultiPointTouchArea是否处理鼠标事件。如果为true(默认值),则触摸区域将把鼠标视为单个触摸点;如果为false,则触摸区域将忽略鼠标事件并允许它们“通过”以便由下面的其他项处理。
touchPoints : list<TouchPoint> |
此属性包含一组用户定义并可以绑定的触摸点对象。
如果mouseEnabled为true(默认值)并且鼠标左键在鼠标悬停在触摸区域内时被按下,则当前鼠标位置将是这些触摸点之一。
在以下示例中,我们有两个小矩形,它们跟随我们的触摸点。
import QtQuick Rectangle { width: 400; height: 400 MultiPointTouchArea { anchors.fill: parent touchPoints: [ TouchPoint { id: point1 }, TouchPoint { id: point2 } ] } Rectangle { width: 30; height: 30 color: "green" x: point1.x y: point1.y } Rectangle { width: 30; height: 30 color: "yellow" x: point2.x y: point2.y } }
默认情况下,此属性保留一个空列表。
参见 TouchPoint.
信号文档
canceled(list<TouchPoint> touchPoints) |
当新的触摸事件因为其他项占用触摸事件处理而被取消时,会发射此信号。
此信号用于高级用法:在存在多个处理输入的MultiPointTouchArea或者在一个Flickable内有一个MultiPointTouchArea时,它很有用。在后一种情况下,如果在onPressed
信号处理程序中执行了一些逻辑然后开始拖动,Flickable可能会从MultiPointTouchArea那里夺取触摸处理。在这些情况下,当MultiPointTouchArea失去了触摸处理权给Flickable时,除released外还应处理canceled
。
touchPoints是取消的触摸点列表。
注意:如果您在信号处理程序代码中使用touchPoints
参数,最好将它在形式参数中的名称重命名以避免与属性touchPoints
混淆(请参阅QML编码约定)
onCanceled: (points) => console.log("canceled", points.length)
注意:相应处理器是onCanceled
。
gestureStarted(GestureEvent gesture) |
当全局拖动阈值达到时,会发射此信号。
此信号通常用于MultiPointTouchArea被嵌套在Flickable或其他MultiPointTouchArea的情况。当达到阈值并且处理了信号后,您可以确定触摸区域是否应该捕获当前的触摸点。默认情况下将不会抓取;要抓取它们,请调用gesture.grab()
。如果手势没有被抓取,嵌套的Flickable,例如,也会有机会抓取。
手势对象还包括关于当前《touchPoints》集和《dragThreshold
》的信息。
注意:相应的处理程序是《onGestureStarted
》。
pressed(列表<TouchPoint> touchPoints) |
当添加新触摸点时,会发出此信号。touchPoints是新点的列表。
如果《minimumTouchPoints》设置为大于一的值,只有达到所需的最低触摸点数量时,才会发出此信号。
注意:如果您在信号处理程序代码中使用touchPoints
参数,最好将它在形式参数中的名称重命名以避免与属性touchPoints
混淆(请参阅QML编码约定)
onPressed: (points) => console.log("pressed", points.length)
注意:相应的处理程序是《onPressed
》。
released(列表<TouchPoint> touchPoints) |
当移除现有触摸点时,会发出此信号。touchPoints是移除点的列表。
注意:如果您在信号处理程序代码中使用touchPoints
参数,最好将它在形式参数中的名称重命名以避免与属性touchPoints
混淆(请参阅QML编码约定)
onReleased: (points) => console.log("released", points.length)
注意:相应的处理程序是《onReleased
》。
touchUpdated(列表<TouchPoint> touchPoints) |
当《MultiPointTouchArea》处理的触摸点发生变化时,会发出此信号。这包括添加新触摸点,移除或取消先前的触摸点,以及更新当前触摸点数据。touchPoints是所有当前触摸点的列表。
注意:相应的处理程序是《onTouchUpdated
》。
updated(列表<TouchPoint> touchPoints) |
当现有触摸点更新时,会发出此信号。touchPoints是这些更新点的列表。
注意:如果您在信号处理程序代码中使用touchPoints
参数,最好将它在形式参数中的名称重命名以避免与属性touchPoints
混淆(请参阅QML编码约定)
onUpdated: (points) => console.log("updated", points.length)
注意:相应的处理程序是《onUpdated
》。
© 2024 Qt公司有限公司。在此包含的文档贡献为各自所有者的版权。在此提供的文档根据自由软件基金会发布的《GNU自由文档许可版1.3》条款许可。Qt及其相应商标是芬兰及/或世界其他国家的Qt公司商标。所有其他商标均为其各自所有者的财产。