Lista QML


([N4] SyP) #1

No se mucho (mejor casi nada) de QML, pero intento sacar una lista con varios campos concatenados y no me funciona, solo sale el primer elemento que pongo en el objeto lista de QML. He copiado la lista de SelDepen.qml del TPV. Trabaja con el ListDelegate en el que solo muestra el primer campo. He creado otro ListDelegate poniendo varias veces la parte del texto, pero muestra el mismo elemento. Como puedo hacer para que muestre el resto.

Gracias


([N2] Esfero) #2

Hola SyP, haber si no me lio mucho con la contestación …, vamos por partes:
1.- SelDepen.qml contiene un ListView, que es el objeto que visualizará la lista, para ello utiliza:
- la propiedad “model:” para contener los registros a presentar, en este caso “theListModel” que representa los datos de la tabla asociada.
- la propiedad “delegate:” que contendrá todo el código necesario para representar gráficamente 1 registro del modelo asociado.

2.- theListModel, es un objeto VQmlListModel de Velneo, que encapsula los datos de la tabla de Velneo en el formato adecuado para que el QML pueda acceder a ellos.

3.- Desde Velneo tenemos el objeto “Lista QML” y aquí entiendo que es donde tienes el problema:
A este objeto, le asociamos una tabla, el fichero QML y 2 propiedades importantes “Contenido”, dentro de QML “display” y “URL Imagen” dentro de QML “decoration”. Esto esta construido por defecto.
Si necesitamos acceder desde QML a mas campos del Registro, tenemos que crear “UserRole” (en el + verde que utilizamos para crear variables, manejadores, etc.), 1 por cada campo (importante definir la propiedad “Nombre en QML” para poder acceder al campo desde QML y lógicamente “Formula”).
Una vez que tengamos creados los “UserRole”, ya tendremos accesible desde QML esos campos del Registro, igual que con “display” y “decoraction”.

4.- En el archivo QML que representa el delegado (en este caso “ListDelegate.qml”) encontraremos ejm:
Image{
source: decoration // accede a “URL Imagen”
}
Text {
text: display // (accede a “Contendido”
}
Si queremos acceder a otros campos del registro ejm:
Image{
source: decoration // accede a “URL Imagen”
}
Text {
text: display // accede a “Contendido”
}
Text {
text: nombreUserRole1 (el que pusimos en la propiedad “Nombre en QML”) // accede a el campo o formula asociada en el “UserRole1”
}
Text {
text: nombreUserRole2 (el que pusimos en la propiedad “Nombre en QML”) // accede a el campo o formula asociada en el “UserRole2”
}

Espero haberme explicado con la suficiente claridad, un Saludo.


([N4] SyP) #3

Muchisismas gracias Esfero, con la explicación que has dado queda clarisimo y funciona perfectamente.