我有多个可以单击的鼠标区域,在它们下面的一个可以处理拖动的鼠标区域。一切都很好,但是在单击鼠标区域之一上开始拖动的部分。我希望即使单击单击区域也可以完成拖动。这意味着,如果对单击区域之一进行小的拖动,结果将是拖动和单击均被识别。
我有一个例子:
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
,同时仍然能够处理鼠标内部区域中的事件。
任何帮助表示赞赏。