我有以下QML Rectangle
具有父项的内容。需要注意的最重要的事情是它应用了一个Translate QML 元素,我正在努力理解它究竟对 QML 项及其应用的子项做了什么。
代码:
Window {
id: main_window
width: 640
height: 480
visible: true
Item {
id: rect_parent
objectName: "rect_parent_object"
x: 0
y: 0
width: parent.width
height: parent.height
transform: Translate {x: -20; y: -30}
Rectangle {
id: rect
objectName: "rect_object"
x: parent.width/2
y: parent.height/2
width: parent.width/3
height: parent.height/3
color: "red"
}
}
}
rect_parent
transform: Translate
如您在上面的代码中所见,有一个属性。以下是应用于它的 XY 平移
transform: Translate {x: -20; y: -20}
在我的代码的 C++ 部分中,我通过以下方式main.cpp
获取QQuickItem
s 。
QQuickItem *rectQuickItem = qml_engine->rootObjects()[0]->findChild<QQuickItem*>("rectObject");
QQuickItem *rectQuickItemParent = qml_engine->rootObjects()[0]->findChild<QQuickItem*>("rectParentObject");
是的,我可以通过以下方式获得x
and y
。rectQuickItem
QQuickItem *rectQuickItemParent = qml_engine->rootObjects()[0]->findChild<QQuickItem*>("rectParentObject");
qreal item_x = rectQuickItem->x();
qreal item_y = rectQuickItem->y();
问题:
但是我如何得到rectQuickItem
翻译的 x 和 y?
我发现这并不是 UI 上实际应用的 x 和 y item_x
。item_y
这似乎transform: Translate
是向 x 和 y 添加了一些rect
我在查询时没有得到的单位rectQuickItem->x()
。
用更简单的话来说,我需要-20
and-30
应用于 x 和 ytransform: Translate
块中rect_parent
,最终适用于rect
目标:
我正在更改父级rectQuickItem
以将其显示在另一个窗口上,其 x 和 y 位置与原始父级相同。我需要添加到属性的单位x
和y
属性,rectQuickItem
以便在视觉上与前一个父级相同的位置transform: Translate
显示。rect
附加问题:
QQuickItem ::MapToItem会以任何方式帮助我吗?