PyQt学习随笔:Model/View中视图数据项编辑变动实时获取变动数据的方法
对于Model/View中视图的数据编辑后怎么能实时获取编辑的数据变动位置和变动情况查阅了一些资料,终于基本弄明白必须重写Model的setData方法才能截获。setData方法是视图中各种角色数据发生更新后视图用于更新Model数据的方法,只要重写该方法就可以截获视图对Model数据的修改。
不过网上介绍的思路都是从QAbstractTableModel派生出一个自己的Model类,并实现相关方法,比较复杂。老猿还需要仔细研究这种方法的详细方式及优缺点,相关文章大部分都是基于Qt实现的,懂C++语言的理解后简单修改就能迁移到PyQt实现模式,在这推荐大家阅读CSDN博友cloveses的《PyQt5使用记录之二 —— QTableView实现数据的显示、编辑、删除与添加》,这是基于PyQt介绍的。
不过老猿今天要介绍的是一种更简单的方式,那就是从PyQt已经实现的从QAbstractTableModel派生的类QStandardItemModel来派生子类,这种方式更简单,只需要重写setData方法就可以了。
步骤如下:
一、从QStandardItemModel派生子类并重写setData方法
class UpdateItemModel(QStandardItemModel):
def setData(self, index, value, role=Qt.EditRole):
# 编辑后更新模型中的数据 View中编辑后,View会调用这个方法修改Model中的数据
print(f"update {index.row()}行{index.column()}列角色为{role}的数据为:{value},初始数据为{index.data()}")
.......#添加自己的数据处理代码
return super().setData(index, value, role)
二、通过自定义类定义自己的存储对象
在应用中最好是应用窗口构造函数中使用如下语句:
self.tableViewModel = UpdateItemModel()
这样简单两步就实现了View更新数据的截获。
这种方法与直接从QStandardItemModel派生自定义类,当然其他的从QAbstractTableModel派生的类如QStringListModel也可以这样使用来派生自定义类。与从QAbstractTableModel派生自定义类相比该方法的优缺点还需要进一步研究,但它至少提供了一种获取更新数据进行处理的简单实现思路。
博客地址:https://blog.csdn.net/LaoYuanPython
老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036
PyQt学习随笔:Model/View中视图数据项编辑变动实时获取变动数据的方法的更多相关文章
- PyQt学习随笔:重写setData方法截获Model/View中视图数据项编辑的注意事项
根据<PyQt学习随笔:Model/View中视图数据项编辑变动实时获取变动数据的方法>可以重写从PyQt的Model类继承的setData方法来实时截获View中对数据的更改,但需要注意 ...
- PyQt学习随笔:Qt中Model/View中的怎么构造View匹配的Model
老猿Python博文目录 老猿Python博客地址 在<PyQt学习随笔:Qt中Model/View相关的主要类及继承关系>介绍了Model/View架构的主要类,在实际使用时,view相 ...
- PyQt学习随笔:Qt中Model/View中的Model Index
Qt中Model/View中的Model Index是一个类,该类用于定位Model/View中数据模型中的数据. Model Index是从QAbstractItemModel派生的子类,用于在项视 ...
- PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的按钮改变缺省文字的方法
在Qt Designer中可以预先定义标准按钮,相关支持的标准按钮请见<PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的StandardButton ...
- PyQt(Python+Qt)学习随笔:Designer中QDialogButtonBox确认clicked信号是哪个按钮发送的方法
一.引言 QDialogButtonBox本身只提供4种信号,分别是accepted.rejected.clicked和helpRequested,在<PyQt(Python+Qt)学习随笔:D ...
- PyQt(Python+Qt)学习随笔:QTableWidget中表格各列平均分配宽度的两种方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QTableWidget表格部件中,如果需要实现表格中各列要占满部件中的可用空间,同时实现各列平分 ...
- PyQt学习随笔:Qt中Model/View相关的主要类及继承关系
View相关类类继承关系: Model相关类类继承关系:
- PyQt学习随笔:Qt中tem Views(Model-Based)和Item Widgets(Item-Based)控件的用途和关系
在界面程序开发中,数据的展示主要包括表格.简单列表.树状列表以及纯文本等多种方式,在Qt中将界面表格.简单列表.树状列表称为"表项视图类(item view class)",并提供 ...
- PyQt学习随笔:应用中通过installEventFilter安装重写的eventFilter捕获应用事件的方法
eventFilter函数是直接从QObject继承的定义的事件刷选虚拟函数,如果一个对象A使用installEventFilter函数将另一个对象B安装了B的实例方法eventFilter,则这个对 ...
随机推荐
- [阿里DIN] 从模型源码梳理TensorFlow的乘法相关概念
[阿里DIN] 从模型源码梳理TensorFlow的乘法相关概念 目录 [阿里DIN] 从模型源码梳理TensorFlow的乘法相关概念 0x00 摘要 0x01 矩阵乘积 1.1 matmul pr ...
- 懂了!国际算法体系对称算法DES原理
概念 加密领域主要有国际算法和国密算法两种体系.国密算法是国家密码局认定的国产密码算法.国际算法是由美国安全局发布的算法.由于国密算法安全性高等一系列原因.国内的银行和支付机构都推荐使用国密算法. 从 ...
- 无字母数字getshell
无字母数字webshell 预备知识 一些不包含数字和字母的webshell https://www.leavesongs.com/PENETRATION/webshell-without-alpha ...
- SSH2中的笔记
1.web后端实质就是对表的添.删.查.改: 第一步:对系统进行分析,然后构思. 第二步:画出E-R图,设计出表或写出相应的实体类. 第三步:按照最简单的思想去设计的话,一个action-->一 ...
- 高性能arm运行ceph存储基准测试
关于arm 之前wdlab对外发布过一次约500个节点的arm的ceph集群,那个采用的是微集群的结构,使用的是双核的cortex-a9 ARM处理器,运行速度为1.3 GHz,内存为1 GB,直接焊 ...
- sort(hdu oj 1425)计数排序和快速排序
Description 给你n个整数,请按从大到小的顺序输出其中前m大的数. Input 每组测试数据有两行,第一行有两个数n,m(0 < n,m < 1000000),第二行包含n个各不 ...
- 查看 /var/log目录下文件个数 命令tree 、cut
查看 /var/log目录下文件个数 方法1. [root@oldboy learn_shell]# tree -L 1 /var/log/ |tail -1 5 directories, 42 fi ...
- weblogic ssrf 漏洞笔记
CVE-2014-4210 Oracle WebLogic web server即可以被外部主机访问,同时也允许访问内部主机.比如有一个jsp页面SearchPublicReqistries.jsp, ...
- ubuntu16.04搭建LAMP(独立安装)
修改APT源 备份原文件source.list sudo cp /etc/source.list /etc/source.list.bak 修改source.list sudo vi /etc/sou ...
- 新鲜出炉!阿里Java后端面经,已拿offer!
前面给大家分享了一篇字节跳动拿下offer的面经,很多小伙伴都私信我说收获很大,感兴趣的朋友可以回头去看看.很多小伙伴还问我有没有其他大厂的面试题分享,这不他来啦,阿里2020春招面试题给大家整理在下 ...