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

时间:2014-09-29 11:10:09

标签: 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
    }
}

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

2 个答案:

答案 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项目。

相关问题