QML通过id锚定到ApplicationWindow不起作用
QML anchors to ApplicationWindow via id not work
我测试了一个简单的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),锚点将不再工作,这是一个错误吗?
ApplicationWindow
最终不是从Item
派生的,因此它没有anchors
属性,这就是使用窗口的id
不起作用的原因。那么为什么要使用parent
呢?因为您在ApplicationWindow
中定义的子级成为称为contentItem
:的中间Item
的子级
如果将项分配给数据列表,它将成为窗口的contentItem,以便它显示在窗口内。项目的父项将是窗口的contentItem,它是Item的根该窗口内的所有权树。。。通常不应该必需引用数据属性,因为它是默认属性对于Window,因此所有子项都会自动分配给此所有物
这看起来像一个bug,但可以根据以下文档进行设计:
出于性能原因,只能将项目锚定到其同级和直接父
目前还不清楚如何在锚定时指定direct parent
。QML翻译器只能接受parent
引用父QML项。
相关文章:
- 没有找到相关文章