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