2017-05-26 73 views
1

我尝试过在http://agateau.com/2016/reordering-a-listview-via-dragndrop-3/中描述的方法,以在列表视图中实现drag'n'drop支持。 但是,当列表中的项目数量增加时,拖动时滚动时会出现问题。通过drag'n'drop重新排序Qt Listview

要重现该问题,请从https://github.com/agateau/listviewdragitem/tree/3-placeholders下载项目。将列表中项目的数量加倍,然后尝试将一个项目(除第一个以外)拖动到列表的末尾。列表滚动一段时间后,拖动的模板将消失。我没有注意到任何发出的信号表明阻力已经完成。

第一个项目由于某种原因可以正确移动。

你有什么建议可能会导致这种行为?

回答

3

原因,即第一个Item不会消失,它是currentItem它是受保护的删除。

其他Item s突然消失的原因是,ListView实例化并破坏了Item,因为它认为它们是可见的。这意味着:因为它们在原始位置上可见。

currentIndex设置为被拖动的Item的索引,以防止其被销毁。

您也可以使用DelegateModel并将相关的Item添加到持久性组中,以防止破坏。