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

QML anchors to ApplicationWindow via id not work

本文关键字:ApplicationWindow 不起作用 通过 id QML      更新时间:2023-10-16

我测试了一个简单的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项。

相关文章:
  • 没有找到相关文章