如何跟踪项目的绝对位置

How to track item's absolute position

任务是跟踪项目的绝对位置。

由于项目的坐标是相对于其直接父级指定的,因此无法知道项目的绝对位置何时发生变化以防其父级移动。

考虑下面的示例,我想知道 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
}

this page 所述,您可以在不同元素之间添加信号。对于您的情况,您可以将 rect1 的信号 xChanged 添加到 rect2.

的信号中
 Component.onCompleted: {

       rect1.xChanged.connect(rect2.xChanged);
 }

另外,请注意它仍会打印 200,因为它的位置相对于它的父级没有改变。

为此你可以做类似的事情:

onXChanged: console.log("rect2 x changed:", rect1.x + rect2.x)