Estoy intentando construir un Componente QML reutilizable que aloje internamente un GridView. Cada elemento en GridView tiene un conjunto de comportamientos (en su mayoría elementos de pantalla y mouse) que es común en toda la aplicación. Sin embargo, lo que se muestra dentro de los elementos de GridView cambia según el caso de uso. (Es decir, el mismo componente encapsulado para un GridView, pero en otro lugar de la aplicación podría usar un Componente diferente).QML: ¿Cómo puedo pasar las propiedades del modelo a un delegado cargado dentro de un delegado GridView (o ListView)?
Entonces, lo que me gustaría hacer es que cada invocación suministre un delegado que se agrega a cada elemento en GridView, que ya es un delegado. En otras palabras, algo como esto:
MyGrid.qml
import QtQuick 1.1
Rectangle {
id: myGrid
objectName: "myGrid"
property Component internalDelegate
property variant internalModel
GridView {
anchors.fill: parent
delegate: Row {
Loader {
sourceComponent: myGrid.internalDelegate
}
}
model: parent.internalModel
}
}
La idea es que el cargador dentro del delegado GridView carga el delegado proporcionada por el usuario, lo que sería algo como esto:
Main.qml
import QtQuick 1.1
Rectangle {
anchors.fill: parent
width: 300
height: 200
MyGrid {
anchors.fill: parent
internalDelegate: Text {
text: name
}
internalModel: ListModel {
ListElement {
name: "a"
}
ListElement {
name: "b"
}
}
}
}
sin embargo, esto no lo hace trabajo. QML informa que "nombre" es una variable desconocida dentro del elemento de texto. Si reemplazo la variable de nombre con una cadena (es decir, "hola"), funciona como se esperaba.
Mi pregunta es, ¿cómo puedo pasar la variable "nombre" a internalDelegate, o mejor aún, hacer que todo el modelo esté disponible para que endpoint interno pueda acceder a todos ellos (dado que la persona que llama también está definiendo el modelo).
Una pregunta complementaria es: ¿hay una mejor manera de hacerlo?
Yo hiero usando tu técnica para mi proyecto. Menos código es mejor y me gusta cómo elimina por completo la necesidad del componente vinculante. ¡Gracias! –