Esencialmente, tengo una ListView habitual:¿Cómo acceder a los datos de un delegado asignado de ListElement de ListView ListModel en QML?
Rectangle {
id: mylist
ListModel {
id: mylistModel
ListElement {
text: "blah1"
}
ListElement {
text: "blah2"
}
ListElement {
text: "blah3"
}
}
Component {
id: mylistDelegate
Text {
id: mylistDelegateText
text: text
property bool mylistDelegateTextEnabled: false
}
}
ListView {
id: mylistView
model: mylistModel
delegate: mylistDelegate
}
}
por favor, ignora cualquier problema que podría haber introducido truncando el código para centrarse en lo importante.
De todos modos, ahora mi problema es que quiero acceder a un delegado asignado de ListElement y ver cuál es el valor de mylistDelegateTextEnabled en un bucle de javascript. Por ejemplo, este bucle itera sobre la lista actual y me da el texto de las ListElements en el modelo:
for(var i = 0; i < mylistModel.count; ++i) {
console.log(mylistModel.get(i).text);
}
Obviamente, esto funciona bien.
Ahora lo que quiero es esencialmente la siguiente:
for(var i = 0; i < mylistModel.count; ++i) {
console.log(mylistModel.get(i).text);
console.log(mylistModel.get(i).delegate.mylistDelegateTextEnabled);
}
Por desgracia, que no parece ser tan fácil.
Ayuda apreciada.
¡Gracias por la respuesta! Intenté y obtengo un error: no puedo asignar a la propiedad de solo lectura "textEnabled". Sí, me gustaría asignar desde QML en lugar de JS. ¿Puedo hacer eso? – Svenstaro
Creo que por el error está tratando de configurar el indicador 'textEnabled' dentro del delegado que no funcionará. En su lugar, actualice el modelo directamente usando 'model.setProperty()'. Actualizaré mi respuesta para demostrarlo de esta manera en lugar de usar 'Component.onCompleted'. –
Eso es perfecto, gracias. – Svenstaro