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
все еще будучи в состоянии обрабатывать события во внутренней области мыши.
Любая помощь приветствуется.