我可以将模型列作为属性传递吗

时间:2019-03-22 12:54:28

标签: qml

ListView {
 model: dataModel
    delegate: Column {
        id: delegate
        Row {
            Repeater {
                model: 1
                ItemDelegate {
                    id:columnDelegate
                   text:name
                }
            }
        }
   }
}

代替text:name我可以将模型列名称作为属性传递,有什么方法可以动态分配模型列名称吗??

    ListView {
         property var columnName //pass column name as property
         model: dataModel
            delegate: Column {
                id: delegate
                Row {
                    Repeater {
                        model: 1
                        ItemDelegate {
                            id:columnDelegate
                           text:columnName //assign property as column name here
                        }
                    }
                }
           }
        }

像这样的事情有可能吗?有什么办法可以解决这个问题? 我可以将模型列名称作为数组传递吗?

1 个答案:

答案 0 :(得分:0)

如果您正在使用数组数据,并希望将其用作model中的repeater,则可以执行以下操作:

Column {
    Repeater {
    model: ["apples", "oranges", "pears"]
    text: modelData
    }
}

取自Repeater QML Type

如果要从网络服务器中获取更多深度数据(例如JSON),您还可以查看诸如

property var arrayData: {apples: {type: "fruit", colour: "green"}, oranges: {type: "fruit", colour: "orange"}, pears: {type: "fruit", colour: "green"}}

model: Object.keys(arrayData) //the 'key' (apples/oranges/pears)

text: arrayData.type // all would be 'fruit' in this example
detailText: arrayData.colour // moreso is you are using a `SimpleRow` to display your data`, but an example of usage

如果您的数据将是更多细节对象,那么这对于访问属性非常有用,或者,如第一个示例一样,它还是静态的,或者是一个简单的数组。完美!

我建议您看看Models and Views in QtQuick以获得其他示例来帮助您!

希望有帮助!