任务是跟踪项目的绝对位置。
由于项目的坐标是相对于其直接父项指定的,因此无法知道项目的父级移动时项目的绝对位置何时发生了变化。
考虑下面的示例,我想知道rect2
视觉移动的时间由于其父级,即rect1
,由空格键击中触发的动作:
import QtQuick 2.2
Item {
id: root
width: 600
height: 200
focus: true
Rectangle {
id: rect1
x: 200
width: 400
height: 200
color: "salmon"
Rectangle {
id: rect2
x: 200
width: 200
height: 200
color: "seagreen"
onXChanged: console.log("rect2 x changed:", x)
}
}
Keys.onSpacePressed: rect1.x = 0
}
答案 0 :(得分:0)
如this page所述,您可以在不同元素之间添加信号。对于您的情况,您可以将xChanged
的信号rect1
添加到rect2
的信号。
Component.onCompleted: {
rect1.xChanged.connect(rect2.xChanged);
}
另外,请注意它仍会打印200,因为它的位置相对于它的父级没有变化。
为此,您可以执行以下操作:
onXChanged: console.log("rect2 x changed:", rect1.x + rect2.x)