QML:MouseArea按下并悬停
对于我正在开发的应用程序,有一点是我绝对需要的:我必须能够将一个对象拖到另一个对象上,并且至少其中一个对象应该注意到它们是相交的。 所以,我的问题是,其中一个项目必须接受一个输入信号,即使鼠标从外部按下 例如:QML:MouseArea按下并悬停,qml,Qml,对于我正在开发的应用程序,有一点是我绝对需要的:我必须能够将一个对象拖到另一个对象上,并且至少其中一个对象应该注意到它们是相交的。 所以,我的问题是,其中一个项目必须接受一个输入信号,即使鼠标从外部按下 例如: import QtQuick 1.0 Rectangle{ id: base width: 500 height: 500 MouseArea{ //Even without this mousearea I don't get what i want.
import QtQuick 1.0
Rectangle{
id: base
width: 500
height: 500
MouseArea{ //Even without this mousearea I don't get what i want.
anchors.fill: parent
//onPressed:{console.log("big")}
}
Rectangle{
id: t
width: 100
height: 100
color: "red"
MouseArea{
anchors.fill: parent
hoverEnabled: true
onPressed:{console.log("little-press")}
onEntered:{console.log("little-enter")}
drag.target: t
}
}
}
我想要的是在红场外按下鼠标键,移动它而不松开按钮。当鼠标经过红色矩形时,我希望发出信号。我不明白为什么它不被发射,因为ONENERED应该只关心鼠标在鼠标earea中的移动,而不是按钮
你知道怎么做吗
非常感谢。您的代码不起作用,因为此时一个鼠标区域将位于另一个鼠标区域之上,鼠标事件将仅由位于顶部的鼠标区域执行(直到您修改了偷窃属性等)。因此,底部矩形的属性(如hover等)无法工作,因为所有这些事件都将被顶部矩形捕获 相反,请尝试以下方法:
import QtQuick 1.0
Rectangle
{
id: topParent
width: 500
height: 500
color: "grey"
Rectangle
{
id: redRectangle
color: "red"
width: 80
height: 80
onXChanged:
{
if( redRectangle.x > greenRectangle.x - redRectangle.width
&& redRectangle.x < greenRectangle.x + greenRectangle.width
&& redRectangle.y > greenRectangle.y - redRectangle.height
&& redRectangle.y < greenRectangle.y + greenRectangle.height
)
{
console.log ( "Red Over Green" )
}
}
MouseArea
{
anchors.fill: parent
drag.target: redRectangle
drag.axis: Drag.XandYAxis
drag.minimumX: 0
drag.maximumX: topParent.width
drag.minimumY: 0
drag.maximumY: topParent.height
onPressed: redRectangle.z = greenRectangle.z + 1
}
}
Rectangle
{
id: greenRectangle
color: "green"
width: 180
height: 180
onXChanged:
{
if( greenRectangle.x > redRectangle.x - greenRectangle.width
&& greenRectangle.x < redRectangle.x + redRectangle.width
&& greenRectangle.y > redRectangle.y - greenRectangle.height
&& greenRectangle.y < redRectangle.y + redRectangle.height
)
{
console.log ( "Green Over Red" )
}
}
MouseArea
{
anchors.fill: parent
drag.target: greenRectangle
drag.axis: Drag.XandYAxis
drag.minimumX: 0
drag.maximumX: topParent.width
drag.minimumY: 0
drag.maximumY: topParent.height
onPressed: greenRectangle.z = redRectangle.z + 1
}
}
}
导入QtQuick 1.0
矩形
{
id:topParent
宽度:500
身高:500
颜色:“灰色”
矩形
{
id:红色矩形
颜色:“红色”
宽度:80
身高:80
交换:
{
如果(redRectangle.x>greenRectangle.x-redRectangle.width
&&redRectangle.xgreenRectangle.y-redRectangle.height
&&redRectangle.yredRectangle.x-greenRectangle.width
&&greenRectangle.xredRectangle.y-greenRectangle.height
&&greenRectangle.y
在我打印信息的地方,您也可以发出信号。谢谢您的回答。它确实可以工作,但不适合我,因为我有很多矩形,而不仅仅是2个(好吧,我想它无论如何都可以工作)。最后,在我的项目中,我使用了另一种解决方案:两个lemente中的一个实际上是一条线,因此我计算线和鼠标区域之间的距离。谢谢你的回答;)