如何跨QML文件访问ID

时间:2017-07-30 17:18:02

标签: qt qml qtquick2 qt-quick

我没有得到如何从一个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. 
   }
}

1 个答案:

答案 0 :(得分:2)

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

将id视为特定于源的内容,在一般情况下,您应该尝试将限制使用限制在此范例中。

但是ids实际上更进一步。根据实例树结构,您可以从子源访问父ID对象,前提是您可以保证将始终使用该特定父实例化子项。我在简化QML文件时发现了这一点,右键单击QML文件中的对象树,然后选择"将组件移动到单独的文件中,新创建的文件通过id保留对父对象的访问权。

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

当然,如果你处理"全球"对象,单身总是要走的路,因为理论上它应该是定位对象的最快和最有效的方法。