У меня есть несколько областей мыши, которые можно щелкнуть, и одна область мыши под ними, которая управляет перетаскиванием.Все это работает довольно хорошо, но та часть, где перетаскивание начинается в одной из областей щелчка мыши.Я хотел бы, чтобы перетаскивание было выполнено, даже если область нажатия нажата.Это означало бы, что, если небольшое перетаскивание выполняется в одной из областей щелчка, результатом будет то, что перетаскивание и щелчок будут распознаны.
Пример, который у меня есть:
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
, при этом все еще имея возможность обрабатывать события во внутренней области мыши.
Любая помощь приветствуется.