你可以嘗試這樣簡單的東西:
ListView {
id: view
model: mod
height: 50
width: 50
property int maxCount: 5
delegate: Rectangle {
height: visible ? 20 : 0
width: visible ? 20 : 0
visible: index < view.maxCount
Text {
anchors.centerIn: parent
text: index
}
}
}
訣竅是讓不可見元素的大小爲零,以便它們不會採取在視圖中的任何空間。
如果您有成千上萬的模型項目和複雜的代理,它將不會有效,因爲所有委託都將在內存中創建,即使不可見。您可以使用加載程序並只加載可見列表項目的實際項目。
還要考慮你限制QAbstractListModel
實現計數,你可以有一個MAXCOUNT變量,並在
rowCount() { return maxCount ? std::min(maxCount, yourList.size()) : yourList.size(); }
這樣,如果MAXCOUNT不爲零,該模型可以報告比其實際尺寸更小。
一種方法是添加一個過濾代理,它的'number_of_elements'屬性暴露給QML。 –
您是否嘗試過使用'DelegateModel' [link](http://doc.qt.io/qt-5/qml-qtqml-models-delegatemodel.html)?您可以創建一個名爲'firstGroup'的組,並且該組中的條件將爲'index <5',並且您的視圖顯示該組。 – user2436719