我有一个TreeView,我无法看到标题。在我的QAbstractItemModel的类定义中,我实现了headerData()函数,如下所示:
def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
if role != QtCore.Qt.DisplayRole:
return '' # empty string since QVariant isn't in PySide
if orientation == QtCore.Qt.Horizontal:
return 'TEST'
return ''
如果我实现headerData(),标题就会消失。没有它,我只得到一个带有数字标签(1,2,3等)的通用水平标题。谁能解释一下这里发生了什么?
答案 0 :(得分:0)
根据文件:
PySide.QtCore.QAbstractItemModel.headerData(section,orientation [, role = Qt.DisplayRole])
参数:
部分 - PySide.QtCore.int方向 - PySide.QtCore.Qt.Orientation
角色 - PySide.QtCore.int 返回类型:对象
这会返回一个int类型,但Display角色是 QtCore.Qt.ItemDataRole 枚举的一部分
要解决我提出以下代码:
def headerData(self, section, orientation, role=0):
role = QtCore.Qt.ItemDataRole(role)
if role != QtCore.Qt.DisplayRole:
return None
if orientation == QtCore.Qt.Horizontal:
return "Test"
return None
答案 1 :(得分:0)
我设法通过返回df.assign(buffer=df.value.where(df.ref.eq(0)).ffill())
作为默认返回值而不是空字符串来解决此问题。我现在正在看到标题,并为除None
之外的所有其他角色打印值。谢谢你的帮助!