如何跨 QML 文件访问 ID

How to access a ID across QML files

我不知道如何从一个 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. 
   }
}

使用id重要的不是文件系统结构,而是实例结构。

将 id 视为特定于源的东西,在一般情况下,您应该尝试限制对这种范例的使用。

但 ids 实际上比这个更进一步。根据实例树结构,您可以从子源访问父 id 对象,前提是您保证子始终将与该特定父实例一起实例化。我在简化 QML 文件时发现了这一点,右键单击 QML 文件中的对象树并选择 "move component to a separate file",新创建的文件保留了通过 id 访问父对象的权限。

考虑到还有其他方法可以访问 QML 中的对象。例如,在源的根对象中定义的属性实际上是动态范围属性,因此只要 属性 不存在,就可以从直接或间接嵌套到该对象中的对象中查找它们被另一个同名的人遮挡。

当然,如果您处理 "global" 个对象,单例总是可行的方法,因为理论上它应该是定位对象的最快和最有效的方法。