Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. 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

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

Scheduled Pinned Locked Moved Solved German
qmllistview
3 Posts 2 Posters 985 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    sm-a
    wrote on last edited by sm-a
    #1

    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

    J.HilkJ 1 Reply Last reply
    0
    • S sm-a

      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

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #2

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

      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      1 Reply Last reply
      2
      • S Offline
        S Offline
        sm-a
        wrote on last edited by
        #3

        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

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved