2014-09-29 47 views
5

我测试一个简单的QML(Qt的SDK版本5.3.2)这样的程序QML锚通过id来ApplicationWindow不行

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),锚不再工作,这是一个错误?

回答

7

ApplicationWindow最终并没有从Item派生,因此它不具有anchors财产,这就是为什么使用窗口的id不起作用。那么为什么要使用parent?因为ApplicationWindow定义成为孩子们children of an intermediateItem称为contentItem

如果一个项目分配给数据表,它成为 窗口的contentItem的孩子,所以它出现在窗口内。该项目的 父项将作为窗口的contentItem,它是该窗口内的项目 所有权树的根。 ...通常不需要参考数据属性 ,因为它是Window的默认属性 ,因此所有子项都自动分配给此 属性。

+0

谢谢,没错。 – secmask 2014-09-29 13:49:27

-2

这看起来像一个错误,但它可以根据以下docs是由设计:

出于性能的考虑,您只能锚定一个项目它的兄弟姐妹 和直接父

这是不太清楚如何在锚定时指定direct parent。 QML翻译器只能接受parent引用父qml项。

+0

这不是一个错误,你可以通过它的'id'或通过使用'parent'来指定直接父项。 – cmannett85 2014-09-29 12:11:36