Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 无法访问另一个QML中一个QML的属性_Qt_Qml - Fatal编程技术网

Qt 无法访问另一个QML中一个QML的属性

Qt 无法访问另一个QML中一个QML的属性,qt,qml,Qt,Qml,我有一个QML文件 QMLFile1.qml Rectangle{ id: LogicFile property int characters property bool checked } 在第二个QML文件中QMLFile2.QML Rectangle{ id: LogicFile property int characters property bool checked } 如果我尝试在第二个文件中实例化第一个文件

我有一个QML文件

QMLFile1.qml

Rectangle{   

    id: LogicFile
    property int  characters
    property bool checked

}
在第二个QML文件中QMLFile2.QML

Rectangle{   

    id: LogicFile
    property int  characters
    property bool checked

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

Rectangle{

   QMLFile1{

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

}
为什么我无法访问第二个QMLFile中第一个QMLFile的属性


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

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

  • 使用属性别名向外界公开父元素的id
  • 现在,在第二个文件中使用别名id重新定义id
  • 现在,您可以使用别名id名称和.(点)运算符访问它们
  • 示例:

    QMLFile1.qml

    Rectangle{
        id: LogicFile
        property alias rectId:LogicFile // exposing id to outside files
        property int  characters
        property bool checked
    }
    
    QMLFile2.qml

    Rectangle{
    
       QMLFile1{
    
               id:rectId       
    
              //Now you can access them like rectId.characters/rectId.checked
              rectId.characters = 10 
    
       }
    
    }
    

    为什么以前没有发生过这样的事情:PI也很惊讶,要实现OPs的目标@SanyamGoel,需要这种技术