我在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
是一个空字符串
我怎样才能获得objectName
,myProp1
和myProp2
?
或者我应该只是排除以下划线和myProp3
答案 0 :(得分:3)
ListElement
使用角色,而不是属性。
... QML元素包含一组角色定义而不是 属性...
因此,由于这些元素可以根据自己的需要定义一些属性,因此无法引用属性或以这种方式循环。
顺便说一下,C++ code中的ListElement
只是QObject
。
另一方面,循环角色的必要性指向某些角色
代码设计中的错误,因为ListElement
的唯一目的是定义一对role_name-value
。
如果您仍想在ListElement
中定义一些枚举值,可以将其定义为属性 - 值数组。