当我尝试使用data
和QtCore.Qt.UserRole
存储setData
时崩溃:item.setData(QtCore.Qt.UserRole, data)
有趣的是,一个非常类似的方法在PyQt4中工作(我实际上是将之前编写的PyQt4代码移植到PyQt5)。
from PyQt5 import QtCore, QtGui, QtWidgets
table = QtWidgets.QTableWidget()
items = ['Item_01','Item_02','Item_03']
column_names = ['Column_01','Column_02','Column_03']
for row, header in enumerate(items):
for col, column_name in enumerate(column_names):
item = QtWidgets.QTableWidgetItem(column_name)
table.setItem(row, col, item)
item.setData(QtCore.Qt.UserRole, column_name)
答案 0 :(得分:1)
我有同样的问题,和@ekhumoro kindly helped me out。
我使用了模型/视图方法,而QTableWidget
继承了QTableView
,因此它也适用于您。
column0 = QtGui.QStandardItem()
column0.setData('Some Label',QtCore.Qt.DisplayRole)
column0.setEditable(False)
x = 123.456
column1 = QtGui.QStandardItem()
column1.setData(x,QtCore.Qt.DisplayRole)
data = [column0, column1]
row = 0 #Specify a row.
for index, element in enumerate(data):
model.setItem(row,index,element)
# Or in this case you might write: treeWidget.setItem(...)
可以使用的角色列表can be found here。
编辑我想我错过了您指定userRole
的地步,在这种情况下只需指定:
QtCore.Qt.UserRole+desired_role_number