我正在尝试创建一个树视图,其中底层节点具有许多属性(~9),并且一直在研究示例附带的PyQt5示例。然而,这些例子和搜索结果并没有回答我下面的问题。首先,我的目标是:
我只想通过一列节点名给出一个树视图,并希望能够对不同的属性/列进行排序。例如,试图使用
myView.sortByColumn(8, QtCore.Qt.AscendingOrder)
按我的模型的第8个属性排序
def data(self, index, role):
[...]
elif index.column() == 8:
return node.status
[...]
但是,仅在视图中显示第一列(节点名称)时
def columnCount(self, parent):
"""
in: QModelIndex
out: int
"""
N = 1
return N
在我的视图中未看到排序结果
将columnCount更改为9后,视图按第8列排序,以换取我不想在视图中看到的8列
您是否必须显示列才能按其排序?如果没有,你能给出一个解释或小例子来说明如何做到这一点吗
在尝试了一些东西之后,我刚刚解决了这个问题:
事实证明,您必须确保模型的columnCount N足够大s.t。代理模型可以使用j列进行排序!即N>;j
自定义的列计数(!)然后可以使用代理模型显示所需的列数
一旦您记住代理模型“查看”了模型,即只知道模型公开的列,那么这种偏离就有意义了
希望这可以为其他人节省几分钟的尝试和错误
相关问题 更多 >
编程相关推荐