Ich möchte ListView
, um leere Zeilen bis zum Ende seiner Höhe anzuzeigen. Wie TableView
aber mit ListView
.Qml ListView leere Zeilen Platzhalter wie in TableView
Ist das möglich?
Ich möchte ListView
, um leere Zeilen bis zum Ende seiner Höhe anzuzeigen. Wie TableView
aber mit ListView
.Qml ListView leere Zeilen Platzhalter wie in TableView
Ist das möglich?
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 : ""
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;
}
}
}
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. –
Es ist keine vollständige Lösung, aber Ihre Antwort war auch nicht vollständig :) – perencia