如何访问ApplicationWindow
的子代objectName
WithApplicationWindow
:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
ApplicationWindow {
id: head
visible: true
width: 640
height: 480
Rectangle{ height:1; width: 1; objectName: "AA"}
Rectangle{ height:1; width: 1; objectName: "BB"}
Component.onCompleted:
{
console.log("parent.data[0].objectName", head.data[0].objectName)
console.log("parent.data[1].objectName", head.data[1].objectName)
}
}
输出:
qml: parent.data[0].objectName ApplicationWindow
qml: parent.data[1].objectName
WithWindow
:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
Window {
id: head
visible: true
width: 640
height: 480
Rectangle{height:1; width: 1; objectName: "AA"}
Rectangle{height:1; width: 1; objectName: "BB"}
Component.onCompleted:
{
console.log("parent.data[0].objectName", head.data[0].objectName)
console.log("parent.data[1].objectName", head.data[1].objectName)
}
}
输出:
qml: parent.data[0].objectName AA
qml: parent.data[1].objectName BB
我们必须根据ApplicationWindow
访问contentData
,而不是data
Component.onCompleted:
{
console.log("parent.data[0].objectName", head.contentData[0].objectName)
console.log("parent.data[1].objectName", head.contentData[1].objectName)
}
: https://doc.qt.io/qt-5/qml-qtquick-controls2-applicationwindow.html contentData-prop
contentData: list
此默认属性保存声明为。的所有对象的列表窗口的子窗口。
data属性允许您自由地混合可视化子资源和应用程序窗口中的其他窗口
如果你将一个Item赋值给contentData列表,它就会成为窗口的内容项,以便它出现在窗口内。的item的父元素将是窗口的contentItem。
通常不需要引用contentData属性,因为它是ApplicationWindow的默认属性,因此所有子项都自动分配给此属性。