无法在QTreeView(PySide)中显示标题

时间:2017-06-30 19:57:11

标签: python pyside

我有一个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等)的通用水平标题。谁能解释一下这里发生了什么?

2 个答案:

答案 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

enter image description here

答案 1 :(得分:0)

我设法通过返回df.assign(buffer=df.value.where(df.ref.eq(0)).ffill()) 作为默认返回值而不是空字符串来解决此问题。我现在正在看到标题,并为除None之外的所有其他角色打印值。谢谢你的帮助!