我没有得到如何从一个QML访问ID到另一个QML。
注意: QML文件位于不同的目录中,以下是代码:
// QML1.qml
Rectangle
{
property alias rect1:rect1
property string title:"some text"
id:rect1
}
// QML2.qml
Text
{
text:rect1.title //**ERROR** ReferenceError: rect1 is not defined
}
[编辑1] :文件夹结构:
|- Main Directory
|- QML1 Directory
|- QML2 Directory
[编辑2] : // Main.qml
ApplicationWindow
{
id:window
width:600
height:400
QML2
{
//Code goes here and I need to access QML1 variable without initializing it.
}
}
答案 0 :(得分:2)
使用id时重要的不是文件系统结构而是实例结构。
将id视为特定于源的内容,在一般情况下,您应该尝试将限制使用限制在此范例中。
但是ids实际上更进一步。根据实例树结构,您可以从子源访问父ID对象,前提是您可以保证将始终使用该特定父实例化子项。我在简化QML文件时发现了这一点,右键单击QML文件中的对象树,然后选择"将组件移动到单独的文件中,新创建的文件通过id保留对父对象的访问权。
考虑在QML中访问对象还有其他方法。例如,在源的根对象中定义的属性是事实上的动态范围属性,因此可以从直接或间接嵌套到该对象中的对象中查找它们,只要该属性不被遮蔽即可。由另一个同名的。
当然,如果你处理"全球"对象,单身总是要走的路,因为理论上它应该是定位对象的最快和最有效的方法。