【发布时间】:2017-02-14 10:19:24
【问题描述】:
当我尝试使用QtCore.Qt.UserRole 和setData 存储data 时崩溃: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)
【问题讨论】:
-
如果用作 UserRole 值“只是从头部随机生成”
QtCore.Qt.UserRole + 10怎么办? -
也因为“Qt::UserRole 是 0x0100”,如果用整数“8”替换 QtCore.Qt.UserRole 会怎样,比如
item.setData(8, column_name) -
我无法重现这一点 - 除非按字面意思理解代码,并且您未能创建
QApplication。 -
我也无法复制它。我正在运行一个围绕 PyQt5 构建的第三方应用程序。之前为它编写的所有插件现在都需要重新编写以解决 PyQt5 中的差异。看来使用
QtCore.Qt.UserRole+integer工作正常。谢谢!