2 мыши работают одновременно, когда один перетаскивает, а другой обрабатывает щелчок - PullRequest
0 голосов
/ 06 декабря 2018

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

Пример, который у меня есть:

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, при этом все еще имея возможность обрабатывать события во внутренней области мыши.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...