在通过PyQt构建的图形界面中进行拖放,要成功进行拖放需要注意:
视图相关属性需要支持拖放,具体相关属性请参考《PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled属性的困惑》和《PyQt(Python+Qt)学习随笔:
QAbstractItemView的dragDropMode属性》老猿使用TableView和ListView验证,视图中提供的拖放动作是通过鼠标左键按下触发,但当视图支持鼠标按下触发编辑时,鼠标左键按下可能会触发项的选择和编辑事件,导致无法直接执行拖动。如下图:
在上图下面的tableView中按下鼠标后无法进入拖动状态,老猿试了很多次都如此,因为还以为无法拖动。经测试中无意中发现,在上述欠款下要正常拖动,操作方法就是选中要拖动数据后,将焦点切换到其他窗口或应用后立即切回,视图中的选中状态数据变为如下:
此时再在上次选中的项上按下鼠标就可以进入拖动状态,注意一定是上次选中的项位置按下!!!
如果鼠标按下不会触发数据的编辑状态则不会存在此问题。