我测试了一个像这样的简单QML(Qt sdk版本5.3.2)程序
import QtQuick 2.3
import QtQuick.Controls 1.2
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
id: appWin
Text {
text: qsTr("Hello World")
anchors.bottom: parent.bottom
}
}
我希望文本将放在应用程序窗口的底部,这就是我的工作。但是,如果我将anchors.bottom: parent.bottom
更改为anchors.bottom: appWin.bottom
(通过ID),锚点不再起作用,这是一个错误吗?
答案 0 :(得分:7)
ApplicationWindow
最终并非来自Item
,因此它没有anchors
属性,这就是为什么使用窗口id
不起作用的原因。那么为什么要使用parent
?因为您 的孩子在ApplicationWindow
中定义为children of an intermediate Item
,称为contentItem
:
如果您将一个项目分配给数据列表,它将成为该项目的子项 Window的contentItem,使其出现在窗口内。这几项 parent将是窗口的contentItem,它是Item的根 该窗口中的所有权树。 ......通常不应该这样 必须引用data属性,因为它是默认属性 对于Window,因此所有子项都会自动分配给它 属性。
答案 1 :(得分:-2)
这看起来像一个错误,但它可以按照docs的设计进行设计:
出于性能原因,您只能将项目锚定到其兄弟姐妹 和直接父母
在锚定时我们如何指定direct parent
并不是很清楚。 QML翻译者只能接受parent
来引用父qml项目。