item的拖动解决了,定义的delegate中的item,其MouseArea对象设置drag属性。我现在的方法是item长按事件中设置drag.target为当前item的id,再把listview的interactive属性置为false,这样就可以实现item的拖动。拖动过程中如果要实现交换,就用ListModel::move,但你在拖动过程中不能调用move,因为会闪一下(ListView在move这些item时会自己把item置到对齐位置),我只能在最后拖动结束后使每个item都对齐了以后再调用move,这样就不会闪了。这个过程需要一系列的控制来改变item的位置(通过自定义动画,需要自己做好同步),需要记录被拖动的item的索引,listmodel自带一个index属性,还需要记录最后一个需要交换的index,在最后位置都对齐后交换两个index即可(因为这个拖动过程中只有被拖动的item的index会改变,其余的item的index只能是加1或减1,所以只需控制被拖动项和最终目标即可)。