无法在 QTreeView 中显示 header
Can't get header to display in QTreeView
我有一个无法看到 header 的 TreeView。在我对 QAbstractItemModel 的 class 定义中,我按如下方式实现 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(),header 就会消失。没有它,我只会得到一个带有数字标签(1、2、3 等)的通用水平 header。谁能解释一下这里发生了什么?
根据文档:
PySide.QtCore.QAbstractItemModel.headerData(section, orientation[,
role=Qt.DisplayRole])
Parameters:
section – PySide.QtCore.int
orientation – PySide.QtCore.Qt.Orientation
role – PySide.QtCore.int
Return type: object
这个returns一个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
我设法通过 return 将 None
作为默认 return 值而不是空字符串来解决这个问题。我现在看到了 header,并且正在为 SizeHintRole
之外的所有其他角色打印值。感谢您的帮助!
我有一个无法看到 header 的 TreeView。在我对 QAbstractItemModel 的 class 定义中,我按如下方式实现 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(),header 就会消失。没有它,我只会得到一个带有数字标签(1、2、3 等)的通用水平 header。谁能解释一下这里发生了什么?
根据文档:
PySide.QtCore.QAbstractItemModel.headerData(section, orientation[, role=Qt.DisplayRole])
Parameters:
section – PySide.QtCore.intorientation – PySide.QtCore.Qt.Orientation
role – PySide.QtCore.int Return type: object
这个returns一个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
我设法通过 return 将 None
作为默认 return 值而不是空字符串来解决这个问题。我现在看到了 header,并且正在为 SizeHintRole
之外的所有其他角色打印值。感谢您的帮助!