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!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值