У меня есть QML ListView
, что я данных вождения делегатов с помощью массива JavaScript:Какую 'модель' я получаю в своем делегате ListView?
ListView {
id:mylist
model: [ {...}, {...}, {...} ] // JS objects
delegate: MyRow { mydata: mylist.model[index] }
}
Приведенный выше код работает правильно. Код, который я изначально написал не работает, как ожидалось, однако:
ListView {
model: [ {...}, {...}, {...} ] // JS objects
delegate: MyRow { mydata: model[index] }
}
MyRow.qml
просто прямоугольник с настраиваемого свойства и некоторые Уложенные из детей:
Rectangle {
property var mydata
color:'#eeeeff'; height:20
RowLayout {
anchors.fill:parent
Text { ... }
Text { ... }
}
}
Когда я прошу model
внутри MyRow
делегат, что я получаю? Это не массив, к которому можно получить доступ по адресу index
, а также не к объекту со свойствами, которые я хочу.
Edit: Если я назначу model+""
в свойстве строки в моем делегатом, я получаю QQmlDMListAccessorData(0x13aee00)
.
Как показано в приложении к [этот отчет об ошибке] (https://bugreports.qt.io/browse/QTBUG-49983), лучше всего использовать 'modelData' вместо' mylist.model [index ] '. – Phrogz