我正在尝试使用maptoItem()函数,当我在main.qml
中使用它时,它可以工作,但是当直接在我的custom item.qml
中使用时,它就不起作用了,我不知道为什么?
main.qml
Item{
id:root_toggle
width: parent.width
height: parent.height
//... code here Column Item etc that changes the y,x position of ToggleAbleItem
ToggleAbleItem{
id:second_toggle_item
Text {
id:fsdfsd
text: "text2"
color: "blue"
font.pixelSize: 24
}
Component.onCompleted: {
var l = second_toggle_item.mapToItem(root_toggle, 0, 0)
console.log(l)
}
}
}
//... code here
控制台日志正确打印[debug] expression for onCompleted (qrc:/main.qml:182) - QPointF(0, 42)
ToggleAbleItem.qml
Item{
id: id_toggleable_item
implicitHeight: childrenRect.height
implicitWidth: childrenRect.width
readonly property point absolute_position: id_toggleable_item.mapToItem(root_toggle, 0, 0)
Component.onCompleted: {
console.log(absolute_position)
}
}
控制台日志打印错误的值[debug] expression for onCompleted (qrc:/ToggleFunctionality/ToggleAbleItem.qml:53) - QPointF(0, 0)
有人能给我解释一下为什么一次映射正确而另一次不正确吗?
我用的是完全一样的东西和身份证。
编辑1:
我们的目标是不使用parent
,因为它可以是第6个孩子,等等。
我还尝试在ToggleAbleItem.qml
中设置ToggleAbleItem.qml
,然后在main.qml
上尝试
发布于 2022-10-10 14:06:36
在Component.onCompleted()
函数内完成后,我必须赋值,然后该值不再是0。我还选择了mapFromItem()
函数而不是mapToItem()
,并从根调用它。
Component.onCompleted: {
absolute_position = root_toggle.mapFromItem(id_toggleable_item, childrenRect.x,childrenRect.y);
}
我知道这很管用,但是如果有人对此有解释的话,那么我最终能完全理解QML,我还是会感激的!
https://stackoverflow.com/questions/74012897
复制相似问题