PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性
一、属性的作用
dragDropOverwriteMode属性用于控制视图的拖放行为,如果其值为True,则视图中选定的数据将在拖拽数据放下时被覆盖,如果其值为False,则拖拽的数据将作为新项插入。当DropAction对应动作为拷贝时,上述拖放的源数据保持不变,而DropAction对应动作为移动数据时,上述拖放的源数据会被删除。
默认值为False,如子类QListView和QTreeView就是这样。而在QTableView子类中,该属性设置为True。
二、访问方法
dragDropOverwriteMode() 、setDragDropOverwriteMode(bool overwrite)这两个方法用于访问和设置该属性。
三、补充说明
1、关于拖放以及拖放响应相关方面的内容,老猿做了很多测试,对于dragDropOverwriteMode属性,上面介绍的关于拖放数据释放处的处理是官网上原文翻译的,关于源数据的处理部分则与官网说法有些不同,是老猿根据测试情况理解后写的,原文不太好理解;
2、关于拖放数据放下后的处理,老猿使用ListView与TableView测试的情况与上述说法有些不一致,并且遇到了些问题,具体测试差异如下:
- dragDropOverwriteMode为True时,拖放数据如果在视图最后面释放,则会添加到视图最后面,但在数据项之上释放时,发现无法覆盖,数据行之间释放时也不会执行插入,即此种情况下,只有在视图最后进行释放时数据会添加到视图最后,其他情况下释放处的数据都没有变化
- dragDropOverwriteMode为False时,拖放数据如果在视图最后面或不同行之间释放,则会在释放处插入拖放数据
另外,在做《PyQt(Python+Qt)学习随笔:QAbstractItemView的showDropIndicator属性》相关测试时,发现可以实现官网上实现的功能,即在数据项上释放时能按官网说明(也即上面第一部分介绍)进行释放处理,但在本部分除dragDropOverwriteMode外其他多个属性(包括dragDropMode、defaultDropAction、selectionMode、selectionBehavior、editTriggers等)各种取值测试也没有重现该覆盖功能,可能组合覆盖不全,具体原因老猿还未弄清楚。
修订:
经反复测试,最终验证上述问题产生的原因是由于对应的model不支持覆盖写导致的。因此关于dragDropOverwriteMode属性的功能,描述如下:
dragDropOverwriteMode属性用于控制视图的拖放行为:
- 如果其值为True,且视图对应存储支持,则视图中拖放的数据将在拖拽数据放下时覆盖放下处的数据
- 如果其值为False,且视图对应存储支持,则拖拽的数据将作为新项插入。
当DropAction对应动作为拷贝时,上述拖放的源数据保持不变,而DropAction对应动作为移动数据时,上述拖放的源数据会被删除。

老猿Python,跟老猿学Python!
PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性的更多相关文章
- PyQt(Python+Qt)学习随笔:QWidget部件的palette属性以及ColorGroup、colorRole的用途和含义
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 1.palette属性 QWidget部件的palette属性用于控制 ...
- PyQt(Python+Qt)学习随笔:模式窗口的windowModality属性与modal属性
windowModality属性 windowModality属性只对窗口对象有效,保存的是哪些类型的窗口被模式窗口阻塞. 模式窗口防止其他窗口中的部件获取输入.此属性的值控制对应窗口可见时阻塞哪些类 ...
- PyQt(Python+Qt)学习随笔:布局控件layoutSpacing属性
在Qt Designer中布局控件有4个,分别是Vertical Layout(垂直布局).Horizontal Layout(水平布局).Grid Layout(网格布局).Form Layout( ...
- PyQt(Python+Qt)学习随笔:布局控件layoutStretch属性
在Qt Designer中布局控件有4个,分别是Vertical Layout(垂直布局).Horizontal Layout(水平布局).Grid Layout(网格布局).Form Layout( ...
- PyQt(Python+Qt)学习随笔:利用QWidget部件的palette以及ColorGroup、colorRole局部调整部件的特定范围颜色
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在<PyQt(Python+Qt)学习随笔:QWidget部件的 ...
- PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性不能覆盖写的问题
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dra ...
- PyQt(Python+Qt)学习随笔:视图中的dragDropMode属性对dragEnabled和acceptDrops属性的影响
老猿Python博文目录 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系&g ...
- PyQt(Python+Qt)学习随笔:视图中的拖放操作注意事项
老猿Python博文目录 老猿Python博客地址 在通过PyQt构建的图形界面中进行拖放,要成功进行拖放需要注意: 视图相关属性需要支持拖放,具体相关属性请参考<PyQt(Python+Qt) ...
- PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled属性的困惑
老猿Python博文目录 老猿Python博客地址 dragEnabled属性用于控制视图是否支持拖拽,可以通过dragEnabled().setDragEnabled(bool enable)进行属 ...
随机推荐
- C# 全局唯一标识符 (GUID)
一 C# 全局唯一标识符 (GUID) Represents a globally unique identifier (GUID). To browse the .NET Framework so ...
- Vue3.0响应式原理
Vue3.0的响应式基于Proxy实现.具体代码如下: 1 let targetMap = new WeakMap() 2 let effectStack = [] //存储副作用 3 4 const ...
- martini-新分子的参数化
http://jerkwin.github.io/2016/10/10/Martini%E5%AE%9E%E4%BE%8B%E6%95%99%E7%A8%8BMol/ 对新分子的参数化可以分为两种情况 ...
- 《GNU_Makefile》——第3章,Makefile总述
1.makefile的内容 一个完整的makefile包含5个东西: 显示规则,隐含规则,变量定义,指示符,注释 (1)显示规则 描述如何更新目标文件. (2)隐含规则 make程序内置的规则. ma ...
- java多线程---张孝祥
1.java web 中,一次http请求是一个任务,因为服务器里面有线程池的,存在一个线程处理多个请求任务. 2.在java中,vector,hashtable,concurrentHashMap是 ...
- CCF-201512-消除类游戏
问题描述 试题编号: 201512-2 试题名称: 消除类游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游 ...
- Python博文_爬虫工程师是干什么的
程序员有时候很难和外行人讲明白自己的工作是什么,甚至有些时候,跟同行的人讲清楚"你是干什么的"也很困难.比如我自己,就对Daivd在搞的语义网一头雾水.所以我打算写一篇博客,讲一下 ...
- Nacos配置中心源码分析
1.使用 compile 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2.2.3.RELEASE' spring: app ...
- 用JavaScript做精灵图
用JavaScript做精灵图 精灵图可以不用在给每一个小块一 一的修改位置.主要原理是找到整张的背景图与li的下标的数学关系. 这是一大张背景图,这个背景图的位置其实是有规律的,每两张之间间隔一个固 ...
- Android10_原理机制系列_AMS(ATMS)之应用的第一次启动的过程
概述 该篇基于Android 10的代码.在 AMS之AMS的启动---Android Framework(Android 10) 中已经介绍了,在Android 10中,activity的调度和管理 ...