QML通过id锚定到ApplicationWindow不起作用

sec*_*ask 6 c++ qt qml

我测试了这样一个简单的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
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望文本将放在应用程序窗口的底部,这是有用的.但如果我anchors.bottom: parent.bottom改为anchors.bottom: appWin.bottom(通过id),锚点不再起作用,这是一个错误吗?

cma*_*t85 7

ApplicationWindow最终并非衍生出来Item,所以它没有一个anchors属性,这就是为什么使用窗口id不起作用.那么为什么要使用parent?因为孩子在定义ApplicationWindow成为中间的孩子 ItemcontentItem:

如果将一个Item分配给数据列表,它将成为Window的contentItem的子项,以便它出现在窗口内.项目的父项将是窗口的contentItem,它是该窗口中项目所有权树的根....通常不需要引用data属性,因为它是Window的默认属性,因此所有子项都会自动分配给此属性.