PyQt(Python+Qt)学习随笔:视图中的dragDropMode属性对dragEnabled和acceptDrops属性的影响
在《PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系》介绍了视图中dragDropMode属性对dragEnabled属性的影响,实际上除了dragDropMode属性对dragEnabled属性有影响之外,对acceptDrops属性也有类似的影响。
经老猿验证测试如下场景:
- 当dragDropMode设置为DragOnly、DragDrop、InternalMove时,会自动将视图dragEnabled设置为True
- 当dragDropMode设置为DropOnly、NoDragDrop时,会自动将dragEnabled设置为False
- 当修改dragEnabled值时,对dragDropMode属性没有影响,但是需要视图支持拖拽,这两个属性都必须支持拖拽,如果一个不支持,则视图无法拖拽
- 当dragDropMode设置为DropOnly、DragDrop、InternalMove时,会自动将视图的acceptDrops属性、以及视图视口的acceptDrops设置为True
- 当dragDropMode设置为DragOnly、NoDragDrop时,会自动将视图的acceptDrops属性、以及视图视口的acceptDrops设置为False
- 当视图的acceptDrops设置为False时,视图视口的acceptDrops同时设置为设置为False,dragDropMode属性如果支持放下,则会将放下去除,如dragDropMode原来为DragDrop,则变为了DragOnly,运行时视图内不能拖放
- 当视图的acceptDrops设置为True时,视图视口的acceptDrops同时设置为设置为True,dragDropMode属性如果不支持放下,则会改为支持放下,如dragDropMode原来为DragOnly,则变为了DragDrop,运行时视图内可以拖放
- 当视图对应视口的acceptDrops设置为False时,视图的acceptDrops属性和dragDropMode属性保持不变,但视图中的拖拽数据只能拖动无法放下
- 当视图对应视口的acceptDrops设置为True时,视图的acceptDrops属性和dragDropMode属性保持不变,但不论视图原来相关属性是否支持拖拽数据放下,视图中的拖拽数据都能放下
从上述场景综合来看,视图中的dragDropMode、dragEnabled和acceptDrops属性相互关系如下:
- 视图中的dragDropMode属性、acceptDrops属性 相互之间都会互相影响,最终效果受这些属性设置语句的执行先后影响,后执行的影响先执行
- 视图中的dragDropMode属性 对dragEnabled是单向影响,即dragDropMode设置值时会根据情况改变dragEnabled的值,但反过来不行,不过最终是否允许拖拽需要这两个属性都支持拖拽才行
- 视图对应视口的acceptDrops属性值改变不会影响视图的dragDropMode、和acceptDrops属性,但视图中如果要支持拖放,需要这三个属性都支持拖放才可
关于视图视口,实际上就是视图中数据可见部分的窗体,所有需要展示的数据都需要滚动到视口才可见。可以通过视图的viewport()方法访问。关于视口更多的说明请参考《PyQt(Python+Qt)学习随笔:QAbstractScrollArea的viewPort(视口)理解》

老猿Python,跟老猿学Python!
PyQt(Python+Qt)学习随笔:视图中的dragDropMode属性对dragEnabled和acceptDrops属性的影响的更多相关文章
- PyQt(Python+Qt)学习随笔: QAbstractItemView的dragDropMode属性
老猿Python博文目录 老猿Python博客地址 一.概述 dragDropMode属性用于控制视图拖放事件的处理方式,其类型为枚举类型DragDropMode. 二.枚举类型DragDropMod ...
- PyQt(Python+Qt)学习随笔:布局控件layout的LeftMargin等contentsMargins属性
在Qt Designer中布局控件有4个,分别是Vertical Layout(垂直布局).Horizontal Layout(水平布局).Grid Layout(网格布局).Form Layout( ...
- PyQt(Python+Qt)学习随笔:视图中的拖放操作注意事项
老猿Python博文目录 老猿Python博客地址 在通过PyQt构建的图形界面中进行拖放,要成功进行拖放需要注意: 视图相关属性需要支持拖放,具体相关属性请参考<PyQt(Python+Qt) ...
- PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled属性的困惑
老猿Python博文目录 老猿Python博客地址 dragEnabled属性用于控制视图是否支持拖拽,可以通过dragEnabled().setDragEnabled(bool enable)进行属 ...
- PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性不能覆盖写的问题
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dra ...
- PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性
老猿Python博文目录 老猿Python博客地址 一.属性的作用 dragDropOverwriteMode属性用于控制视图的拖放行为,如果其值为True,则视图中选定的数据将在拖拽数据放下时被覆盖 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的autoFillBackground属性
autoFillBackground属性可以确认部件背景是否自动填充,如果自动填充,Qt会在调用Paint事件之前填充部件的背景.使用的颜色由部件调色板中的QPalette.window 角色定义(关 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的accessibleDescription和accessibleName辅助阅读属性
accessibleDescription和accessibleName属性都是用于残疾人辅助阅读的,这两个属性都有国际化属性(关于国际化请参考<PyQt(Python+Qt)学习随笔:Qt D ...
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的toolTip、toolTipDuration、statusTip、whatsThis属性
toolTip属性 toolTip属性设置部件的toolTip提示信息,toolTip提示信息在鼠标放到控件上会浮动出一个小框显示提示信息.默认情况下,仅显示活动窗口子部件的toolTip,可以通过在 ...
随机推荐
- 小学生学习C++应该具备哪些基础?
一.电脑操作基础: 应该具备一些必要的电脑相关的知识,如操作系统的相关知识,如何打开.编辑.保存文件.对电脑的能力有一些基本的认识,以及会使用鼠标,键盘熟练输入. 磨刀不误砍柴工,至少要做到能快速找到 ...
- java中在构造方法中修改线程名,修改失败原因(现已修改成功)
package com.cx.Threads; public class HelloThread extends Thread{ @Override public void run() { for ( ...
- Java 最佳命名规则记录
类名:使用双驼峰规则.如 TestService 包名:命名全小写,且使用小写 如使用 web.csvdata.util 而不是 web.csvData.util 或 web.csvdata.util ...
- malloc/free与new/delete的区别(转)
相同点:都可用于申请动态内存和释放内存 不同点:(1)操作对象有所不同.malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符.对于非内部数据类的对象而言,光用m ...
- 同步FIFO学习笔记
- simple-rpc
RPC的实现原理 正如上一讲所说,RPC主要是为了解决的两个问题: 解决分布式系统中,服务之间的调用问题. 远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑. 还是以计算器Calc ...
- EF Core 一、重识 EF
重识EF EF Core 学习资料:https://docs.microsoft.com/zh-cn/ef/core/dbcontext-configuration/ 本为作为EF Core学习的开始 ...
- java8-lambda-list中字符出现字数的统计
@Test public void testStringCount(){ List<String> moidList1 = new ArrayList<>(); moidLis ...
- MFC的消息响应机制说明
MFC的快速理解: 1.MFC的设计者们在设计MFC时,有一个主要的方向就是尽可能使得MFC的代码要小,速度尽可能快.为了这个方向,工程师们使用了许多技巧,主要表现在宏的运用上,实 现MFC的消息映射 ...
- 【Redis】利用 Redis 实现分布式锁
技术背景 首先我们需要先来了解下什么是分布式锁,以及为什么需要分布式锁. 对于这个问题,我们可以简单将锁分为两种--内存级锁以及分布式锁,内存级锁即我们在 Java 中的 synchronized 关 ...