2014-09-29 44 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