Bonjour à tous,
J'ai besoin d'afficher une Gridlayout à partir d'un modèle précisant des sections et des attribut/valeur. Quand c'est un type Section, le délégué doit prendre 2 colonnes (Layout.columnsSpan :2), or que lorsque c'est un model attribut/valeur, l'attribut doit aller dans la première colonne et la valeur doit aller dans la seconde colonnes.
Voici ce que j'ai jusqu'ici :
Le problème c'est que le délégué chargé par le Loader perd la notion de Layout. Je sais que je pourrais retirer le Loader et utiliser utiliser le même délégué en cachant soit celui pour la section our celui poru les attributs, mais il se peut que la grille devienne plus complexe éventuellement. Donc, comment utiliser l'attribut Layout dans mon délégué dynamique ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 ListModel { id: model ListElement { type : "Section"; name: "Première section"; } ListElement { type : "Attribute"; name :"Attribut #1"; value : "Value de l'attribut #1" } } Component { id: sectionComponent Rectangle { Layout.columnSpan: 2 // Erreur Layout.fillWidth: true // Erreur Layout.fillHeight: true // Erreur Text { anchors.centerIn: parent font.pointSize: 14 text: modelData.name } } } Component { id: attributeComponent Rectangle { Layout.fillWidth: true // Erreur Layout.fillHeight: true // Erreur Text { anchors.centerIn: parent font.pointSize: 14 text: modelData.name } } } Component { id: modelComponent Loader { sourceComponent: type == "Section" ? sectionComponent : attributeComponent property variant modelData: mainRowCenterRightContentModel.get(index) } } GridLayout { id : gridLayout anchors.fill: parent columns: 2 rows: model.count Repeater { model: model delegate: modelComponent } }
Merci
Partager