如何获取有关ColumnLayout内部元素的笛卡尔坐标

时间:2018-12-17 10:12:40

标签: qt qml qtquick2

具有ColumnLayout,该ColumnLayout的内部有4个不同的项(使用Layout定位),如何从这些项之一获取笛卡尔坐标?

示例:

import QtQuick 2.11
import QtQuick.Layouts 1.3

ColumnLayout {
    spacing: 0
    Layout.topMargin: 10
    Layout.bottomMargin: 10

    Image {
        id: item1 
        Layout.alignment: Qt.AlignHCenter
        sourceSize: Qt.size(204, 96)
    }

    Text {
        id: item2
        Layout.topMargin: 15
        Layout.fillWidth: true
        horizontalAlignment: Text.AlignHCenter
        text: "hello"

    }

    Text {
        id: item3
        Layout.alignment: Qt.AlignHCenter
        text: "world"
    }
}

基于id为“ item3”的元素的笛卡尔坐标的位置是什么?如何获得?

1 个答案:

答案 0 :(得分:1)

如果要获取item3相对于ColumnLayout的位置,则必须使用属性xy

// ...

Text {
    id: item3
    Layout.alignment: Qt.AlignHCenter
    text: "world"
    Component.onCompleted: console.log(x, y)
}

如果要尊重屏幕,则必须使用mapToGlobal()功能:

Component.onCompleted: console.log(mapToGlobal(x, y))