无法访问另一个QML的属性

San*_*oel 4 qt qml

我有一个QML文件

QMLFile1.qml

Rectangle{   

    id: LogicFile
    property int  characters
    property bool checked

}
Run Code Online (Sandbox Code Playgroud)

在第二个QML文件QMLFile2.qml中

如果我尝试像这样在第二个文件中实例化第一个文件

Rectangle{

   QMLFile1{

         // unable to access the 
         //properties here id: LogicFile
         // property int  characters
         //property bool checked
   }

}
Run Code Online (Sandbox Code Playgroud)

为什么我无法在第二个内部访问第一个QMLFile的属性。

但是,如果我直接在第二个文件中实例化firstQML文件,即不在任何元素(如矩形,项目等)内,则所有属性都可访问,为什么会这样?

Mah*_*esh 5

为此,您可以访问第二个文件中的属性:

  1. 使用Property别名将父元素的ID暴露给外界。
  2. 现在,在第二个文件中用别名ID重新定义ID
  3. 现在,您可以使用别名ID名称和。(点)运算符访问它们

例:

QMLFile1.qml

Rectangle{
    id: LogicFile
    property alias rectId:LogicFile // exposing id to outside files
    property int  characters
    property bool checked
}
Run Code Online (Sandbox Code Playgroud)

QMLFile2.qml

Rectangle{

   QMLFile1{

           id:rectId       

          //Now you can access them like rectId.characters/rectId.checked
          rectId.characters = 10 

   }

}
Run Code Online (Sandbox Code Playgroud)