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 :

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
        }
    }
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 ?

Merci