2016-03-29 21 views

Antwort

0

Ein sehr einfacher Ansatz.

Zuerst definieren das Element Höhe:

property int itemHeight: 40 

Dann wird auf der ListView:

Component.onCompleted: { 
      var numItems = mainForm.height/itemHeight 
      for(var i=0; i < numItems; i++) { 
       listView1.model.append({}) 
      } 
     } 

wo mainForm ist der Elternteil von listview1.

Für die leeren Zeilen korrekt angezeigt werden Sie für die Existenz des Elements Eigenschaft überprüfen könnten, das heißt:

color: colorCode ? colorCode : "white" 

text: name ? name : "" 
+0

Nun, das ist nicht wirklich eine Lösung. Elemente können eine variable Höhe haben, außerdem müssten wir jedes Mal überprüfen, wenn wir neue Elemente hinzufügen, wenn wir leere Zeilen entfernen müssen. –

+0

Es ist keine vollständige Lösung, aber Ihre Antwort war auch nicht vollständig :) – perencia

1

Mit Hilfe von Qt Jungs, eine schöne Lösung bekam (dieser Code ist, der innerhalb von Listview ist innerhalb von ScrollView):

Component { 
    id: rectComp 
    Rectangle { 
     id: rowHeaderRect 
     height: 50 
     color: rowIndex % 2 == 0 ? Theme.rowColor : Theme.altRowColor 
    } 
} 
Column { 
    id: rowfiller  
    Loader { 
     id: rowSizeItem 
     sourceComponent: rectComp 
     visible: false 
    } 
    property int rowHeight: rowSizeItem.implicitHeight 
    property int paddedRowCount: height/rowHeight 

    y: listview.contentHeight - listview.contentY + listview.originY 
    width: parent.width 
    visible: true 
    height: scrollview.viewport.height - listview.contentHeight 
    Repeater { 
     model: visible ? parent.paddedRowCount : 0 
     Loader { 
      property int rowIndex: index 
      width: rowfiller.width 
      height: rowfiller.rowHeight 
      sourceComponent: rectComp; 
     } 
    } 
}