qml拖动响应覆盖问题(求助)

在qml页面中Rectangle写了一个响应
MouseArea {
anchors.fill: parent
property variant previousPosition
onPressed: {
previousPosition = Qt.point(mouseX, mouseY);
}
onPositionChanged: {
if (pressedButtons == Qt.LeftButton) {
var dx = mouseX - previousPosition.x
var dy = mouseY - previousPosition.y
mainWidget.pos = Qt.point(mainWidget.pos.x + dx,
mainWidget.pos.y + dy)
}
}
}

然后在Rectangle中写了一个Image中也有一个响应
Image {
id:skin
source: “qrc:/icon/skin.png”
opacity: 1
width: 16
height: 16

MouseArea {
anchors.fill: parent
hoverEnabled:true
onEntered: {
skin.opacity = 0.8
}
onExited: {
skin.opacity = 1
}
onClicked: {
console.log(“skin”)
}
}
}
image中的点击响应没有效果!
如果把Rectangle中的响应写倒Image 之前 Image的点击响应会生效但是Rectangle中的onPressed响应没效果,有什么解决方案木有:soso__10570585375778755561_4:

之前遇到了覆盖的问题,你这里估计要把onPressed事件也写到Image里也可以满足对应的需求吧?

恩!但是每个Image中都得写,代码可能会比较冗余.不过能用就好:soso_e113:

将你的Image{}内容移到Rectangle的MouseArea {}下面就行了,我记得好像是这样的 qml中响应区域后面写的会覆盖在前面写的之上 这种覆盖好像是用z:来定义前后都没用的 你先试试 不行的话再讨论

我在每个Image{}中都加了
onPressed: {
previousPosition = Qt.point(mouseX, mouseY);
}
onPositionChanged: {
if (pressedButtons == Qt.LeftButton) {
var dx = mouseX - previousPosition.x
var dy = mouseY - previousPosition.y
mainWidget.pos = Qt.point(mainWidget.pos.x + dx,
mainWidget.pos.y + dy)
}
}
能满足我的要求