2016-03-29 3 views

ответ

0

очень простой подход.

Во-первых, определить высоту элемента:

property int itemHeight: 40 

Затем на ListView:

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

где mainForm является родителем listview1.

Для пустых строк для корректного отображения вы можете проверить существование свойства элемента, а именно:

color: colorCode ? colorCode : "white" 

text: name ? name : "" 
+0

Ну, на самом деле это не решение. Элементы могут иметь переменную высоту, также нам нужно будет проверять каждый раз, когда мы добавляем новые элементы, если нам нужно удалить пустые строки. –

+0

Это не полное решение, но ваш ответ был не слишком полным :) – perencia

1

С помощью Qt ребята, получили хорошее решение (этот код находится внутри ListView, который внутри 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; 
     } 
    } 
}