Я хочу, чтобы ListView
отображал пустые строки до конца своей высоты. Как TableView
, но с ListView
.
Это возможно?
Я хочу, чтобы ListView
отображал пустые строки до конца своей высоты. Как TableView
, но с ListView
.
Это возможно?
С помощью ребят из 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;
}
}
}
Очень простой подход.
Во-первых, определите высоту элемента:
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 : ""