簡體   English   中英

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更改為anchors.bottom: parent.bottom anchors.bottom: appWin.bottom (通過id),錨點不再起作用,這是一個錯誤嗎?

ApplicationWindow最終並不是從Item派生的,因此它沒有anchors屬性,這就是為什么使用窗口的id不起作用的原因。 那么為什么要使用parent呢? 因為ApplicationWindow定義的 Item成為名為contentItem 的中間 Item Item

如果將一個Item分配給數據列表,它將成為Window的contentItem的子項,以便它出現在窗口內。 項目的父項將是窗口的contentItem,它是該窗口中項目所有權樹的根。 ...通常不需要引用data屬性,因為它是Window的默認屬性,因此所有子項都會自動分配給此屬性。

這看起來像一個bug,但它可以按照以下文檔設計:

出於性能原因,您只能將項目錨定到其兄弟姐妹和直接父母

在錨定時我們如何指定direct parent並不是很清楚。 QML轉換器可能只接受parent引用父qml項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM