我想知道为什么Item
这有效:
Item {
id: root
width: 640
height: 480
MouseArea {
anchors.fill: (root or parent. It doesn't matter)
onClicked: console.log("clicked")
}
}
但对Window
而言,它并没有。只有父级锚定才能起作用,但是对于按ID锚定它会失败。
答案 0 :(得分:3)
根据documentation,anchors.fill
要求参数要么是或要识别Item
派生的对象。
从here开始,您可以关注Window
的继承链,看看它实际上不是Item
。
此外,从here您可以看到:
如果您将一个项目分配给数据列表,它将成为Window的contentItem 的子项,因此它将显示在窗口内。
我们拥有contentItem
的地方:
此附加属性包含场景的隐藏根项目,如果项目不在窗口中,则为null。
正因为如此,你所观察到的是有道理的:
id
的{{1}}无法识别Window
→按Item
锚定会导致错误 id
实际上是隐藏的parent
- 派生Item
,contentItem
的每个孩子都自动成为父级的代表,通过Window
进行锚定正确地工作