2 мыши работают одновременно, когда один перетаскивает, а другой обрабатывает щелчок

У меня есть несколько областей мыши, которые можно щелкнуть, и одна область мыши под ними, которая обрабатывает перетаскивание. Все это работает довольно хорошо, но та часть, где перетаскивание начинается в одной из областей щелчка мыши. Я хотел бы, чтобы перетаскивание было выполнено, даже если область нажатия нажата. Это будет означать, что если небольшое перетаскивание выполняется в одной из областей щелчка, результатом будет распознавание как перетаскивания, так и щелчка.

Пример у меня есть:

Window {
    id: root
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    property var repeaterModel: [Qt.point(100, 100), Qt.point(100, 200), Qt.point(200, 100), Qt.point(200, 200)]

    MouseArea {
        id: dragMouseArea
        anchors.fill: parent
        onPositionChanged: {
            repeaterModel[0] = Qt.point(mouseX, mouseY)
            repeater.model = root.repeaterModel
        }
    }

    Repeater {
        id: repeater
        model: root.repeaterModel

        Rectangle {
            x: modelData.x; y: modelData.y
            width: 50; height: width
            color: "red"

            MouseArea {
                anchors.fill: parent
                onClicked: {
                    root.repeaterModel[index] = Qt.point(0, 0)
                    repeater.model = root.repeaterModel
                }
            }
       }
    }

}

Вот dragMouseArea просто перетаскивает первый прямоугольник. Внутренняя область мыши сбрасывает щелкающий прямоугольник в нулевую позицию. Поэтому, если я начну перетаскивать любой из прямоугольников, перетаскивание не произойдет.

Повторитель здесь по замыслу dragMouseArea не должно иметь прямого доступа к этим прямоугольникам.

Я попробовал установить mouse.accepted в false несколькими способами, но все они ломаются в некоторый момент. Я хочу перенаправить все события из внутренней области мыши на dragMouseArea все еще будучи в состоянии обрабатывать события во внутренней области мыши.

Любая помощь приветствуется.

0 ответов

Другие вопросы по тегам