Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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中获取子项的id_Qt_Debugging_Qml - Fatal编程技术网

Qt 如何在qml中获取子项的id

Qt 如何在qml中获取子项的id,qt,debugging,qml,Qt,Debugging,Qml,当我尝试获取children ID时,我稍微修改了这个示例 与按空格键相反: qml: undefined qml: this is pole qml: this is pinweel qml: this is blur 为什么此脚本返回未定义的id 我需要遍历一些对象,并且能够知道什么是什么——所以我需要知道如何遍历根树,以获取其子对象的id及其对象类型 不幸的是,我无法打印最繁琐的id,必须添加一些简单的属性才能完成,但这意味着在实际项目中需要大量工作,因为每个对象都需要信息属性:( 因此

当我尝试获取children ID时,我稍微修改了这个示例

与按空格键相反:

qml: undefined
qml: this is pole
qml: this is pinweel
qml: this is blur
为什么此脚本返回未定义的id

我需要遍历一些对象,并且能够知道什么是什么——所以我需要知道如何遍历根树,以获取其子对象的id及其对象类型

不幸的是,我无法打印最繁琐的id,必须添加一些简单的属性才能完成,但这意味着在实际项目中需要大量工作,因为每个对象都需要信息属性:(

因此,我重申:

  • 为什么本例中的id未定义
  • 如何使用qml遍历对象树并打印其id和类型

  • ID不是普通的对象属性,所以当您尝试通过JS对其进行评估时,它是未定义的,而QML不提供诸如<代码> Type of /Cuth>之类的操作符。因此,您需要手动添加<代码>类型或<代码> ObjistNox< /Case>属性。我将考虑子类<代码>图像< /代码>,并添加<代码>类型 > Ref:< /P>

    项目
    {
    id:根
    形象{
    id:背景
    类型:“图像”
    }
    形象{
    id:杆
    类型:“图像”
    }
    函数iter(){
    对于(变量i=0;i
    但是为什么不提供id?我可以理解为什么它应该是只读的,但是在应用工程方面,不为开发者提供id的原因是什么?@user2614242
    id
    不是不动产。从文档中可以看出:“虽然它看起来像一个普通属性,但
    id
    属性不是一个普通属性属性,并且应用了特殊的语义;例如,在上面的示例中,无法访问
    myTextInput.id
    。“我有一个类似的问题要问。您是否可以编辑您的问题,以获得关于为什么无法访问对象的
    id
    值的解释?
    qml: undefined
    qml: undefined
    qml: undefined
    qml: undefined
    
    qml: undefined
    qml: this is pole
    qml: this is pinweel
    qml: this is blur
    
    Item 
    {
    id: root
    
    Image {
        id: background
        type: "image"
    }
    
    Image {
        id: pole
        type: "image"
    }
    function iter(){
         for(var i = 0; i < root.children.length; ++i)
             if(root.children[i].type==="image"){
             //balabala
             }
         }
    }
    }