簡體   English   中英

獲取QML ListElement的屬性

[英]Get properties of QML ListElement

我在QML中有一個自定義對象,該對象使用加載程序動態加載qml對象並設置其屬性。 我想訪問ListElement的所有屬性,並將其通過槽傳遞給Loader。

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__2objectNameChanged是對象類型和objectName是一個空字符串

如何只獲取myProp1myProp2myProp3 或者我應該排除以下划線和objectName(Changed)開頭的名稱

ListElement通過角色而不是屬性進行操作。

文檔中

... QML元素包含角色定義而不是屬性的集合...

因此,由於這些元素可以根據自己的需要定義某些屬性,因此您無法引用屬性或以這種方式循環瀏覽。

順便說一句, C ++代碼中的 ListElement只是一個QObject

另一方面,循環遍歷角色的必要性指出了代碼設計中的一些錯誤,因為ListElement的唯一目的是定義一對role_name-value

如果仍要在ListElement定義一些枚舉值,則可以將其定義為屬性-值數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM