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

被折叠的 条评论
为什么被折叠?



