----- DragHandler -----


https://doc.qt.io/qt-6.9/zh/qml-qtquick-draghandler.html

 属性 
import QtQuick
    
Item {
    DragHandler {
        acceptedButtons: flags
            //激活此DragHandler 的鼠标按钮
            //默认左键
        acceptedDevices: flags
            //激活该指针处理程序的指向设备类型
            //默认 PointerDevice.AllDevices,即所有设备
            //可以只响应触摸操作,也可以只响应鼠标操作
        acceptedModifiers: flags
            //如设置了该属性,则需按下给定的键盘修改器才能响应
            //默认 Qt.KeyboardModifierMask,即忽略修改键
            acceptedModifiers: Qt.NoModifier
                //不允许使用任何修改键
            acceptedModifiers: Qt.ShiftModifier
                //必须按键盘上的 Shift 键
            acceptedModifiers: Qt.ControlModifier
                //必须按键盘上的 Ctrl 键
            acceptedModifiers: Qt.AltModifier
                //必须按下键盘上的 Alt 键
            acceptedModifiers: Qt.MetaModifier
                //必须按下键盘上的 Meta 键
            acceptedModifiers: Qt.KeypadModifier
                //必须按下键盘上键
            acceptedModifiers: Qt.GroupSwitchModifier
                //必须按下键盘上的模式切换键
                //仅限 X11(除非在 Windows 上通过命令行参数激活)
            acceptedModifiers: Qt.KeyboardModifierMask
                //处理程序并不关心按下了哪些修改器
        acceptedPointerTypes: flags
            //激活该指针处理程序的指向工具类型(手指、触控笔、橡皮等)
        dragThreshold: int
            //必须拖动 eventPoint 才能被视为拖动手势的距离(以像素为单位)
        enabled: bool
            //如果PointerHandler 被禁用,它将拒绝所有事件,也不会发出任何信号
        margin: real
            //项目外,也可响应事件,默认 0
        parent: Item
            //作用域,即使在 a 的子级也可指定 b 为父级
        target: Item
            //默认情况下,它与parent 相同
        snapMode: enumeration  //抓取模式
            //用于将目标项的中心点捕捉到eventPoint 
            snapMode: DragHandler.NoSnap
                //从不抓取
            snapMode: DragHandler.SnapAuto
                //如果eventPoint 在目标项之外按下,且 目标是parent 项的后代,则目标会捕捉(默认值)
            snapMode: DragHandler.SnapWhenPressedOutsideTarget
                //如果eventPoint 在目标之外按下,则目标会咬合
            snapMode: DragHandler.NoSnap
                //从不抓取
            snapMode: DragHandler.SnapAlways
                //始终抓取
        //x(y)Axis group 控制水平拖动的约束条件
        x(y)Axis.enabled: bool
            //允许水平/垂直拖动,默认 true
        x(y)Axis.maximum: real
            //水平/垂直拖动的最大值
        x(y)Axis.minimum: real
            //水平/垂直拖动的最小值
    }
}


 只读属性 
import QtQuick
    
Item {
    DragHandler {
        active: bool
            //是否动作
        activeTranslation: vector2d
            //拖动手势时的平移
            //手势开始时,平移值为0, 0
            //再次拖动时,平移值重置为0, 0
        x(y)Axis.activeValue: real
            //与activeTranslation.x(y) 相同
    }
}


 信号 
import QtQuick
    
Item {
    DragHandler {
        canceled(eventPoint point)
        onCanceled:
            //如果此处理程序已经抓取了给定的point ,则当抓取被其他指针处理程序或项目窃取时,会发出此信号
    
        grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
        onGrabChanged:
            //当抓取点发生与该处理程序相关的某种变化时,就会发出该信号
    }
}