如何使用QML DragHandler的grabChanged信号中GrabTransition参数
DragHandler的grabChanged信号正确使用方法
Qt 5.10及后续版本的GrabTransition枚举虽未在公开文档中详细说明,但实际有三类固定可取值,可直接用于判断拖拽状态:
DragHandler.GrabTaken:拖拽处理器成功获取事件抓取权,拖拽动作正式启动,此时可执行拖拽初始化逻辑DragHandler.GrabReleased:拖拽处理器主动释放抓取权,拖拽动作正常结束(对应用户松开鼠标/触控按键的场景)DragHandler.GrabCanceled:抓取权被其他组件抢占,拖拽动作被意外中断(比如上层弹窗抢占输入事件的场景)
使用示例
DragHandler{ id: dragHandler onGrabChanged: { switch(transition) { case DragHandler.GrabTaken: console.log("拖拽启动") // 拖拽初始化逻辑写在此处 break case DragHandler.GrabReleased: console.log("拖拽正常结束") // 拖拽完成后的处理逻辑写在此处 break case DragHandler.GrabCanceled: console.log("拖拽被中断") // 异常状态恢复逻辑写在此处 break } } }
补充说明
如果仅需要判断拖拽是否处于进行状态,可直接绑定DragHandler自带的active属性:该属性会在拖拽激活时自动变为true,拖拽结束/中断时自动变为false,实现逻辑比监听grabChanged信号更简洁。
内容的提问来源于stack exchange,提问作者user1466885
相关产品推荐
相关产品推荐

