获取QML ListElement的属性

时间:2016-02-15 15:06:43

标签: qt properties qml

我在QML中有一个自定义对象,它使用Loader动态加载qml对象并设置它的属性。我想访问ListElement的所有属性,并将其传递给Loader。

<%= f.select :project_id, @project_options, {selected: @project.id, include_blank: (@project ? false : true)}, class: (@project ? nil : "form-control") %>

这个问题是我还得到了许多我没想到的其他属性名称。

model: ListModel {
    ListElement {           
        bodySource: "some_object.qml"
        bodyModel: ListElement {
            myProp1: false
            myProp2: ""
            myProp3: 0.0
        }
    }
}

var bodyModelElement = model.get(0).bodyModel.get(0);
for (var propertyName in bodyModelElement)
{
    console.info("propertyName: " + propertyName);
}

其中qml: propertyName: objectName qml: propertyName: myProp3 qml: propertyName: myProp2 qml: propertyName: myProp1 qml: propertyName: objectNameChanged qml: propertyName: __0 qml: propertyName: __1 qml: propertyName: __2 __0__1__2属于对象类型 并且objectNameChanged是一个空字符串

我怎样才能获得objectNamemyProp1myProp2? 或者我应该只是排除以下划线和myProp3

开头的名称

1 个答案:

答案 0 :(得分:3)

ListElement使用角色,而不是属性。

来自documentation

  

... QML元素包含一组角色定义而不是   属性...

因此,由于这些元素可以根据自己的需要定义一些属性,因此无法引用属性或以这种方式循环。

顺便说一下,C++ code中的ListElement只是QObject

另一方面,循环角色的必要性指向某些角色 代码设计中的错误,因为ListElement的唯一目的是定义一对role_name-value

如果您仍想在ListElement中定义一些枚举值,可以将其定义为属性 - 值数组。