-
简介
- PinchArea 是一个不可见的组件,通常将它与实际能看见的组件联合使用,为该组件提供捏拉手势处理(缩放、移动)。注:PinchArea从Qt 5.5才开始支持捏拉手势处理,并且需要你运行程序的设备可以使用多点触摸。 学习背景
- 安卓端需要加载地图(一些二维数据绘制成的地图),并且能对地图进行缩放、平移操作。 绑定需要捏拉组件的两种方式
-
- 第一种。使用pinch.target进行绑定
-
- 第二种。自己处理PinchArea的三个信号pinchStarted() 、pinchUpdated()、pinchFinished(),如果不处理,可以使用上面一种绑定target的方式,PinchArea会自动帮你处理这三个信号。处理信号的方法。e.g:
- onPinchStarted: {
// TO DO
}
- onPinchStarted: {
- 第二种。自己处理PinchArea的三个信号pinchStarted() 、pinchUpdated()、pinchFinished(),如果不处理,可以使用上面一种绑定target的方式,PinchArea会自动帮你处理这三个信号。处理信号的方法。e.g:
参数介绍
- enable true是默认值,表示启用PinchArea
可以通过使用"pinch.XXX"来设置PinchArea的属性,pinch引用源码中的介绍如下:
pinch provides a convenient way to make an item react to pinch gestures.
- pinch.target:绑定需要进行捏拉操作的组件id
- pinch.active:(只读[bool])所绑定的target是否正在被拖拽
- pinch.minimumScale:限制缩放的最小倍率(如果是第二种绑定方式,则该参数无用)
- pinch.maximumScale:限制缩放的最大倍率(法二则无用)
- pinch.minimumRotation:限制旋转的最小角度 min = -180 (法二则无用)
- pinch.maximumRotation:限制旋转的最大角度 max = 180 (法二则无用)
- pinch.dragAxis:限制能否拖拽和拖拽方式。(缩放动作执行后才能进行该操作)
- Pinch.XAxis(只沿x轴移动)
- Pinch.YAxis(只沿y轴移动)
- Pinch.XAndYAxis(x,y轴都可以)
- Pinch.NoDrag(禁止移动)
- pinch.minimumX:限制沿x轴移动的最小坐标
- pinch.maximumX:限制沿x轴移动的最大坐标
- pinch.minimumY:限制沿y轴移动的最小坐标
- pinch.maximumY:限制沿Y轴移动的最小坐标
使用绑定的第二种方式
需要用户根据PinchEvent对象中的值,对目标组件的属性进行相应的更改。注:PinchEvent内置了一个对象,pinch,可通过"pinch.XX"访问属性。以下属性只能在处理信号的时候使用。
- center:(只读[QPointF])目前触摸的两个点的中心坐标
- startCenter:(只读[QPointF])第一次触摸时,两点的中心坐标
- previousCenter:(只读[QPointF])上一次触摸事件的两点中心坐标
- scale:(只读[real])当前缩放的倍数
- previousScale:(只读[real])上一次缩放的倍数
- angle:(只读[real])当前旋转角度,范围是[-180,180]
- previousAngle:(只读[real])上一次旋转角度
- rotation:(只读[real])这次旋转开始到结束所旋转的角度。
- point1:(只读[QPointF])触摸的一个点坐标
- point2:(只读[QPointF])触摸的另一个点坐标
- startPoint1:(只读[QPointF])开始触摸时的一个点坐标
- startPoint2