小编alm*_*est的帖子

跨越多列,使用 QTreeView 和 QAbstractItemModel

我想制作一个 TreeView,其中顶级条目跨越所有列(例如它们有一行),而子项跨越多个列(例如它们有多行。)

我试图用 QTreeView.setFirstColumnSpanned 来完成这个。但是,我真的不知道在何处/何时调用它(也许我一开始就完全错误。)

我想也许我可以在我的视图中创建一个函数,该函数将在视图填充后调用,以检查任何需要更新其跨度的项目。

但是,我找不到任何可以连接的信号来帮助我做到这一点(我尝试了几个,但似乎都没有触发。)

我还尝试在我的模型中重新实现 insertRows 和/或在我的视图中重新实现 rowsInserted,但它们似乎从未被调用过。

这是我正在做的极其简化的版本:

class MyModel(QtCore.QAbstractItemModel):
    def __init__(self, top_level_nodes):
        QtCore.QAbstractItemModel.__init__(self)
        self.top_level_nodes = top_level_nodes
        self.columns = 5

    def columnCount(self, parent):
        return self.columns

    def rowCount(self, parent):
        total = len(self.top_level_nodes)
        for node in self.top_level_nodes:
            total += len(node.subnodes)
        return total

    def data(self, index, role):

        if not index.isValid():
            return QtCore.QVariant()

        if role == QtCore.Qt.DisplayRole:
            obj = index.internalPointer()
            return obj.name

        return QtCore.QVariant()

    def index(self, row, column, parent):
        if not parent.isValid():
            if row > (len(self.top_level_nodes) - 1):
                return QtCore.QModelIndex() …
Run Code Online (Sandbox Code Playgroud)

python pyqt qtreeview qabstractitemmodel

2
推荐指数
1
解决办法
2157
查看次数

标签 统计

pyqt ×1

python ×1

qabstractitemmodel ×1

qtreeview ×1