当我尝试使用QtCore.Qt.UserRole
和setData
存储数据
时,它崩溃了:item.setData(QtCore. Qt.UserRole,数据)
有趣的是,非常相似的方法在 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)
最佳答案
我也遇到了同样的问题,@ekhumoro kindly helped me out。
我使用了模型/ View 方法,并且 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
关于python - 如何在 PyQt5 的 QTableWidgetItem 中使用 UserRole 设置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42213723/