如何跨 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" 个对象,单例总是可行的方法,因为理论上它应该是定位对象的最快和最有效的方法。
我不知道如何从一个 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" 个对象,单例总是可行的方法,因为理论上它应该是定位对象的最快和最有效的方法。