最近做項目需要用到在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
}
}
}
}
}
後來發現這樣寫會有時會監聽失敗,後來寫了改進版,并且屏蔽掉了多指同時觸摸造成多個定時器同時開啟的錯誤,過幾天更新過來。