QListView的movement属性用于控制在视图中怎么移动数据项,其类型为枚举类型QListView.Movement,有如下取值:
- Static:对应值为0,表示数据项不能被移动
- Free:对应值为1,表示数据项可以随意移动
- Snap:对应值为2,在gridSize属性不为空的情况下表示数据项移动时会按指定网格对齐
关于以上几个取值,经老猿测试有如下补充说明:
- 当movement设置为Static时,在其前面设置的dragDropMode、dragEnabled如果是支持拖放的(即dragDropMode=DragDrop,dragEnabled=True),则这二者的值会随movement的值变化变为去掉可以拖的属性,即dragDropMode变为DropOnly,dragEnabled变为False,此时视图中的数据项不能拖动
- 当movement设置为Static时,在其后改变dragEnabled和dragDropMode值分别为True和DragDrop,movement的值不会改变,同时视图中的数据项只能拖不能放下
- 当movement设置为Free时,在其前面设置的dragDropMode、dragEnabled如果是不支持拖放的,如dragDropMode为NoDragDrop,dragEnabled为False,则这二者的值会随movement的值变化变为增加可以拖的属性,即dragDropMode变为DragOnly,dragEnabled变为True,此时视图中的数据项在dragDropMode不支持放下的情况下都可以实施拖放
- 当movement设置为Free时,在其后改变dragEnabled和dragDropMode值分别为False和NoDragDrop,movement的值不会改变,同时视图中的数据项无法拖放
- 当movement设置为Snap时,其拖放效果与Free效果相同,这个应该是老猿验证得不充分,具体情况未明
- 当设置gridSize属性并使得该值导致数据项周边的空余空间较多且在视图支持拖放操作的情况下,在数据项周边空白处放下数据时,相关的数据会添加到视图最后一行,其他地方放下与未设置gridSize相同