如何跟踪项目的绝对位置

时间:2015-04-09 09:30:45

标签: qml qtquick2

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

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

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

1 个答案:

答案 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)