Qt QML-鼠标earea/鼠标事件问题
下面的代码生成一个白色矩形,其中包含一个红色矩形和一个灰色矩形。每个矩形都有一个关联的MouseArea。在灰色矩形内单击鼠标时,该矩形将变为蓝色。红色矩形在鼠标光标进入时打印控制台消息,在释放信号时打印另一条消息 我想:Qt QML-鼠标earea/鼠标事件问题,qt,mouse,mouseevent,qml,qtquick2,Qt,Mouse,Mouseevent,Qml,Qtquick2,下面的代码生成一个白色矩形,其中包含一个红色矩形和一个灰色矩形。每个矩形都有一个关联的MouseArea。在灰色矩形内单击鼠标时,该矩形将变为蓝色。红色矩形在鼠标光标进入时打印控制台消息,在释放信号时打印另一条消息 我想: 在灰色矩形内按住鼠标按钮(变为蓝色) 将光标移到灰色/蓝色矩形外,然后移到红色矩形内,而不释放按钮并捕获红色矩形的输入信号 释放按钮,使光标位于红色矩形内,并捕获红色矩形的释放信号 可能吗?对于当前代码,只有在输入时未按下mopuse按钮时,才会发出红色矩形的输入信号,只有在
import QtQuick 2.0
Rectangle{
color: "white"
height: 210
width: 500
MouseArea{
id: mainMa
anchors.fill: parent
hoverEnabled: true
onReleased:{console.log("white-released")}
}
Column{
spacing: 10
Rectangle{
color: "red"
height: 100
width: 500
MouseArea{
anchors.fill: parent
hoverEnabled: true
propagateComposedEvents: true
onEntered:{console.log("red-enter")}
onReleased:{console.log("red-released")}
}
}
Rectangle{
color: "#666666"
height: 100
width: 500
MouseArea{
id: ma
anchors.fill: parent
hoverEnabled: true
onPressed: {parent.color = "blue"; console.log("grey pressed")}
onReleased: {parent.color = "#666666"; console.log("grey released")}
}
}
}
}我想您需要拖放操作。为此,在红色矩形中添加DropArea,并在灰色矩形中进行活动拖动 类似的内容(最小代码): 如果不想移动灰色矩形,可以添加不可见的可拖动项:
MouseArea {
id: mousearea
anchors.fill: parent
onReleased: dargItem.Drag.drop()
drag.target: dargItem
Item {
id: dargItem
x: mousearea.mouseX
y: mousearea.mouseY
width: 1; height: 1
Drag.active: mousearea.drag.active
Drag.hotSpot.x: 1
Drag.hotSpot.y: 1
}
}
谢谢你,纪尧姆!事实上,我不想移动灰色矩形,所以“第二个解决方案”是被选中的一个!
MouseArea {
id: mousearea
anchors.fill: parent
onReleased: dargItem.Drag.drop()
drag.target: dargItem
Item {
id: dargItem
x: mousearea.mouseX
y: mousearea.mouseY
width: 1; height: 1
Drag.active: mousearea.drag.active
Drag.hotSpot.x: 1
Drag.hotSpot.y: 1
}
}