Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Gridview mit Delegate aus Model füllen

Gridview mit Delegate aus Model füllen

Scheduled Pinned Locked Moved Solved German
3 Posts 1 Posters 742 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.
  • T Offline
    T Offline
    Throndar
    wrote on last edited by Throndar
    #1

    Hallo,

    ich versuche gerade ein GridView mit Component (Rectangle mit Beschriftungen) zu füllen. Das ganze wird über ein QAbstractListModel mit Objekten gefüllt.

    Das klappt soweit auch ganz gut und es wird für jedes Objekt im Model ein Component erstellt, nur schaffe ich es scheinbar nicht an die Variablen in den Objekten (z.B. Name des Objekts als String) usw. ran zu kommen.

    Im TableView nutze ich ja

    view.model.get(row).lenght
    

    beispielsweise wenn ich vom model des TableView view per get den Index hole und dann das Attribut (hier die Länge) für die row die ich angeklickt habe.

    Oder bei einem TableView fülle ich per

    TableViewColumn {
                    role: 'lenght'
                    title: "Länge"
                }
    

    die Spalten mit den densprechenden Werten.

    Aber wie übergebe ich das dem Component das er jeweils die Werte für das aktuelle Objekt zieht beim generieren?

    1 Reply Last reply
    0
    • T Offline
      T Offline
      Throndar
      wrote on last edited by Throndar
      #2

      Hallo,

      nach langem testen und probieren habe ich es selbst gefunden.

      Wenn jemand auch das Problem hat, die Syntax für die Components die den Grid füllen sollen lautet dann:

      view.model.get(this, 0).lenght
      

      view = der view (in meinem Fall Gridview)
      model = das Model das den View füllen soll (bei mir ein QAbstractListModel)
      get = selbst definierte Funktion im Model die die QVariantMap mit den Daten der entsprechenden Role zurück liefert
      (this, 0) = Daten von aktuellem Element (this), Spalte 0, weil Listmodel mit nur eine Spalte in der die Objekte mit den Daten liegen
      lenght = der Parameter der zurück geliefert werden soll

      1 Reply Last reply
      1
      • T Offline
        T Offline
        Throndar
        wrote on last edited by Throndar
        #3

        Hallo nochmal,

        nach intensiveren Tests mit großen Datenmengen musste ich feststellen das die obere Lösung scheinbar manchmal willkürlich Datensätze durcheinander bringt (leider konnte ich noch nicht genau nachvollziehen was genau das auslöst, ich tippe auf eine Konstellation im Model, da arbeitet ich noch dran ;)

        Die alternative Lösung die sauber funktioniert (Quelle im Text unter dem Beispiel):
        http://qt-project.org/doc/qt-5/qtquick-modelviewsdata-modelview.html#qml-data-models

        in der Definition des Component eine int Property definieren und mit dem Index des Elements bei der Erstellung füllen um extern darauf zuzugreifen.

        property int indexOfThisDelegate: index
        

        und sich dann bei der Auswertung und den Daten die ausgewertet werden sollen auf diesen Index beziehen:

        view.model.get(index, 0).lenght
        

        Vielleicht hilft das ja jemandem :)

        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