最近做项目需要用到在QML中实现长按事件
网络上几乎搜不到可以解决的办法
或者有方法但不实用
最后终于在http://bbs.csdn.net/topics/390120760 这篇帖子中找到了解决办法,在此感谢。
记录一下方法,以便之后使用。
ApplicationWindow {
visible: true
width:
height:
title: qsTr("Hello World")
color: "pink"
property bool isLongHold:false
Rectangle {
id:pinch2
width: ; height:
color: "yellow"
Timer{
id:timer;
interval: ;
onTriggered: isLongHold = true
}
PinchArea {
anchors.fill: parent
pinch.target: pinch2//指定了一个可见对象的Id去拖拽
pinch.minimumScale : //最小缩放倍数
pinch.maximumScale : //最大缩放倍数
pinch.dragAxis: Pinch.XAndYAxis//双指拖拽
MouseArea{
anchors.fill: parent
drag.target: pinch2//同样指向要操作的对象的ID
drag.axis:Drag.XAndYAxis//指定了方向拖拽是否被允许
onDoubleClicked: {
pinch2.scale *= //双击放大
}
onPressed: timer.start()
onReleased:{
timer.stop()
if(isLongHold){
console.log("long hold")
}
else{
console.log("not long hold")
}
isLongHold = false
}
}
}
}
}
后来发现这样写会有时会监听失败,后来写了改进版,并且屏蔽掉了多指同时触摸造成多个定时器同时开启的错误,过几天更新过来。