Solved Wie muss ich eine QML ListView erstellen damit diese sich so verhält wie eine QListView? Damit meine ich Elemente auswählen (hinterlegung beim Klicken) und bei einem Klick den index des geklickten Elements ermitteln
-
Hallo an alle,
da ich neu in Qt QML bin und ich es selbst auch nach mehreren Suchen bei Google nichts gefunden habe wende ich mich nun an euch. Hoffe Ihr habt eine Lösung.
Wie kann ich bei einer QML ListView es erreichen das ich nach einem Klick auf einen Eintrag der geklickte Eintrag markiert wird? Bis jetzt habe ich es nur erreicht das ich den ersten Eintrag markiert bekomme. Wenn ich jedoch auf einen weiteren Klicke passiert nichts.
Weiterhin muss es auch funktionieren das ich den index des geklickten Eintrags ermitteln kann aber das bekomme ich auch alleine nicht gelöst.
Hier nun mein bestehender Code:
ListView { id: jobsListView x: 259 y: 38 width: 268 height: 730 //model: wird in QML-Datei definiert delegate: Text { text: modelData } highlight: Rectangle { color: "lightsteelblue" radius: 5 } focus: true }
Würde mich über Hilfe sehr freuen.
Grüße
Sven -
hi @sm-a
jedes delegate item hat ein einzigartiges
index
Attribut. Das kannst du nutzen um entsprechende Eintrag zu highlighten und zu identifizieren, welches Item angeklickt wurde.z.B.:
ListView{ id: view delegate: Rectangle{ width: view.width height: 50 color: index == view.currentIndex ? "lightsteelblue" : "white" //Blauer hintergrund wenn ausgewählt Text{ anchors.fill: parent text: modelData } MouseArea { anchors.fill:parent onClicked: console.log("Index von geklicktem Item:", index) //eventuell, wenn die MouseArea das nicht an den view weiterleiten sollte, musst du hier auch den aktuellen Index manuell setzen. aka: view.currentIndex = index } } }
-
Hi @J-Hilk vielen vielen Dank. Das hat mir sehr weitergeholfen und es funktioniert jetzt dank Deiner Hilfe.
Eine schöne neue Woche wünsche ich Dir.
Grüße
Sven