我希望 ListView 反转其项目的顺序,以便最新的项目位于顶部。
我尝试使用 verticalLayoutDirection: ListView.BottomToTop
来实现这一点,但它使 ListView 从底部填满(我猜这是预料之中的)。
我用红色标记了所述 ListView 的实际边界。
如何反转 ListView 的项目顺序并仍然从上到下填充?越干净越好。
根据要求,更多信息:
ListView
{
id: theList
anchors
{
left: parent.left
top: theAboveList.bottom
right: parent.right
bottom: parent.bottom
}
model: theModel
delegate: theDelegate {}
verticalLayoutDirection: ListView.BottomToTop
clip: true
}
我需要将其反转的原因是,委托(delegate)实例知道它们何时位于最底部(我可以在委托(delegate)中执行 index === 0
),以设置某种状态。
最佳答案
如果我理解正确的话,我想到的第一个想法是使用模型并操作来自 C++ Qt side 的模型.但是这个任务需要更多的耐心并且会产生一点开销。
另一种方法是将您的模型作为典型的 JavaScript 列表来操作——填充它,然后手动反转。
代码很简单:
function swap(a, b) {
if (a < b) {
move(a, b, 1)
move (b-1, a, 1)
} else if (a > b) {
move(b, a, 1)
move (a-1, b, 1)
}
}
function reverse() {
for (var i = 0; i < Math.floor(count/2); ++i) {
swap(i, count-i-1)
}
}
在这里您可以找到我写的 AdvancedListModel
的源代码 -- https://github.com/troyane/StackOverflow-pro/tree/master/AdvModel_qml .
关于listview - 反转ListView而不从底部填充ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28496502/