一、属性的作用

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属性的更多相关文章

  1. PyQt(Python+Qt)学习随笔:QWidget部件的palette属性以及ColorGroup、colorRole的用途和含义

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 1.palette属性 QWidget部件的palette属性用于控制 ...

  2. PyQt(Python+Qt)学习随笔:模式窗口的windowModality属性与modal属性

    windowModality属性 windowModality属性只对窗口对象有效,保存的是哪些类型的窗口被模式窗口阻塞. 模式窗口防止其他窗口中的部件获取输入.此属性的值控制对应窗口可见时阻塞哪些类 ...

  3. PyQt(Python+Qt)学习随笔:布局控件layoutSpacing属性

    在Qt Designer中布局控件有4个,分别是Vertical Layout(垂直布局).Horizontal Layout(水平布局).Grid Layout(网格布局).Form Layout( ...

  4. PyQt(Python+Qt)学习随笔:布局控件layoutStretch属性

    在Qt Designer中布局控件有4个,分别是Vertical Layout(垂直布局).Horizontal Layout(水平布局).Grid Layout(网格布局).Form Layout( ...

  5. PyQt(Python+Qt)学习随笔:利用QWidget部件的palette以及ColorGroup、colorRole局部调整部件的特定范围颜色

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在<PyQt(Python+Qt)学习随笔:QWidget部件的 ...

  6. PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性不能覆盖写的问题

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dra ...

  7. PyQt(Python+Qt)学习随笔:视图中的dragDropMode属性对dragEnabled和acceptDrops属性的影响

    老猿Python博文目录 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系&g ...

  8. PyQt(Python+Qt)学习随笔:视图中的拖放操作注意事项

    老猿Python博文目录 老猿Python博客地址 在通过PyQt构建的图形界面中进行拖放,要成功进行拖放需要注意: 视图相关属性需要支持拖放,具体相关属性请参考<PyQt(Python+Qt) ...

  9. PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled属性的困惑

    老猿Python博文目录 老猿Python博客地址 dragEnabled属性用于控制视图是否支持拖拽,可以通过dragEnabled().setDragEnabled(bool enable)进行属 ...

随机推荐

  1. python数据分析03Python的数据结构、函数和文件

    我们会从Python最基础的数据结构开始:元组.列表.字典和集合.然后会讨论创建你自己的.可重复使用的Python函数.最后,会学习Python的文件对象,以及如何与本地硬盘交互. 3.1 数据结构和 ...

  2. Python基本数据类型与数据结构(数据挖掘学习)

    前言 最近工作和研究涉及到数据挖掘和机器学习,出于归纳和总结知识的目的写下这一系列的文章,这一系列文章将会包括Python的基本数据类型和数据结构,函数和面向对象相关的知识,然后会介绍数据挖掘和机器学 ...

  3. css布局中的BFC

    1.BFC的区域会与float的元素区域重叠 2.计算BFC的高度时,浮动子元素也参与计算 3.BFC就是页面上的一个隔离的独立容器,容器里面的子元素是不会影响到外面的元素 4.BFC意为" ...

  4. Spring源码之FactoryBean的实现

    https://zhuanlan.zhihu.com/p/97005407 https://blog.csdn.net/qq_35634181/article/details/104507465 总结 ...

  5. RTP协议解析及H264/H265 音视频RTP打包分析

    一 概述 实时传输协议(Real-time Transport Protocol或简写RTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的. RTP协议详 ...

  6. laydate 使用

    官网 http://www.layui.com/doc/modules/laydate.html 参考 http://www.cnblogs.com/fengpingfan/p/4660273.htm ...

  7. [web安全原理分析]-XEE漏洞入门

    前言 1 前言 XXE漏洞 XXE漏洞全称(XML External Entity Injection)即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致 ...

  8. php(tp5) 生成二维码

    phpqrcode类库官网下载地址:https://sourceforge.net/projects/phpqrcode/ 1.我们先看看php是怎么生成二维码的 1.首先我们先下载一下  phpqr ...

  9. centos8 mysql8遇到的问题

    1.装了第一遍,连接没遇到问题,没注意是怎么装的:本机连,外部连都没碰到问题: 遇到了表名大小写的问题,改了配置文件my.cnf或/etc/my.cnf.d/mysql-server.cnf的文件 在 ...

  10. 实在是秒啊,我还从来没见过把Spring之AOP讲的这么通俗易懂的,安排!

    Spring之AOP 什么是AOP? AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. ...