2017-05-26 110 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添加到持久性組中,以防止破壞。