PyQt(Python+Qt)学习随笔:QTableWidgetItem项数据的data和setData访问方法
QTableWidget部件中的QTableWidgetItem项数据可以通过项的data( int role) 方法获取项中指定列指定角色的数据,也可以通过setData(int role, QVariant value)方法设置指定角色的数据为value。例如项的文本可以通过data方法和setData方法使用Qt.DisplayRole、Qt.EditRole这两种角色去访问。
关于数据的角色请参考《PyQt学习随笔:Model/View中诸如DisplayRole的数据角色及含义》。
注意:
- role虽然是整数,但实际上是枚举类型 Qt.ItemDataRole,关于及取值及含义请参考
- QVariant 表示任何PyQt的数据类型,所以value的类型没有约束
- 关于Qt.DisplayRole、Qt.EditRole二者大多数情况下是一致的,有种说法是只有当显示的数据是内部数据进行转换后展示时会有所不同,例如性别数据可能是0和1,显示为男和女,这种情况下就会不同,但关于这点的使用上老猿还没有研究清楚,因为通过PyQt内置的便利类和Model/View标准类使用时,发现无论是读取数据还是设置数据,二者的效果相同,因此老猿估计可能在从PyQt提供的内置类去派生类时可能有用。老猿验证,在派生类中重新实现setData方法时,要获取用户在界面上修改的编辑数据,只能通过Qt.EditRole角色,Qt.DisplayRole取不到修改的数据。
示例代码:
def initItems(self):
print(self.tableWidget.rowCount(),self.tableWidget.columnCount())
self.tableWidget.setRowCount(3
self.tableWidget.setColumnCount(3)
print(self.tableWidget.rowCount(), self.tableWidget.columnCount())
for row in range(3):
for col in range(3):
item = QtWidgets.QTableWidgetItem(f"({row},{col})")
self.tableWidget.setItem(row,col,item)
item.setData(QtCore.Qt.DecorationRole,QtGui.QIcon('.\\icon\\'+str(row+1)+'.gif'))#设置图标
item.setData(QtCore.Qt.CheckStateRole, row%3) #设置复选状态
item.setData(QtCore.Qt.TextAlignmentRole,col % 3) #设置文本对齐方式
print(self.tableWidget.rowCount(), self.tableWidget.columnCount())
item = QtWidgets.QTableWidgetItem(f"({row},{col})")
self.tableWidget.setVerticalHeaderLabels(['行1','行2','行3'])
self.tableWidget.setHorizontalHeaderLabels(['列1','列2','列3'])
运行后界面:


老猿Python,跟老猿学Python!
PyQt(Python+Qt)学习随笔:QTableWidgetItem项数据的data和setData访问方法的更多相关文章
- PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性
老猿Python博文目录 老猿Python博客地址 一.属性的作用 dragDropOverwriteMode属性用于控制视图的拖放行为,如果其值为True,则视图中选定的数据将在拖拽数据放下时被覆盖 ...
- PyQt(Python+Qt)学习随笔:视图中的拖放操作注意事项
老猿Python博文目录 老猿Python博客地址 在通过PyQt构建的图形界面中进行拖放,要成功进行拖放需要注意: 视图相关属性需要支持拖放,具体相关属性请参考<PyQt(Python+Qt) ...
- 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)学习随笔:利用QWidget部件的palette以及ColorGroup、colorRole局部调整部件的特定范围颜色
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在<PyQt(Python+Qt)学习随笔:QWidget部件的 ...
- PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系
老猿Python博文目录 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled属性的困惑>中,老猿觉得dragE ...
- 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# type对象
新建控制台应用程序 新建一个类 class MyClass { private int id; private int age; public int numb; public string Name ...
- Spider_基础总结6--动态网页抓取--selenium
# 有些网站使用 '检查元素'也不能够好使,它们会对地址进行加密,此时使用Selenium 调用浏览器渲染引擎可以模拟用户的操作,完成抓取: # 注:selenium既可以抓取静态网页也可以抓取动态网 ...
- Spider--补充_None_global_urlparse
# 知识点补充: # 1) None: a = None if a: print("非None") else: print("None") if a is no ...
- Internet 网络协议族
1.linux目前支持多种协议族,每个协议族用一个net_porto_family结构实例来表示,在初始化时,会调用sock_register()函数初始化注册到net_families[NPROTO ...
- 守护进程详解以及start-stop-daemon命令
1.概念:守护进程是在后台运行的不受终端控制的进程,通常守护进程在系统启动时自动运行,守护进程的名称通常以d结尾,比如sshd.xinetd.crond等. 2.创建守护进程的步骤:a.调用fork( ...
- 面经手册 · 第18篇《AQS 共享锁,Semaphore、CountDownLatch,听说数据库连接池可以用到!》
作者:小傅哥 博客:https://bugstack.cn Github:https://github.com/fuzhengwei/CodeGuide/wiki 沉淀.分享.成长,让自己和他人都能有 ...
- JXLS2.4导出Excel
1.添加依赖:http://mvnrepository.com/artifact/org.jxls <dependency> <groupId>org.jxls< ...
- 算法:矩阵连乘(Java)动态规划
Description 给你2个矩阵A.B,我们使用标准的矩阵相乘定义C=AB如下: A数组中栏(column)的数目一定要等于B数组中列(row)的数目才可以做此2数组的相乘.若我们以rows(A) ...
- Docker 初始
1. Docker 是什么? 官网的介绍是"Docker is the world's leading software container platform." 官方给Docke ...
- Java之定时任务全家桶
定时任务应用非常广泛,Java提供的现有解决方案有很多.本次主要讲schedule.quartz.xxl-job.shedlock等相关的代码实践. 一.SpringBoot使用Schedule 核心 ...