使用第 1、2 或 3 列(而不是第 0 列)中的可扩展项构建 Qtreeview

问题描述 投票:0回答:1

我正在尝试实现这样的树视图

enter image description here

使用 QtreeWidget 很容易做到,但是我很难使用 QtreeView 实现同样的事情。

每次我尝试在第一列中插入包含空单元格的行时,该行就没有更多的子项。 每次我在第 0 级插入列时,我都会丢失子级。

这是我的基本代码,用于从嵌套字典结构填充模型(以 {井名_i:{深度类型_i:{日志类型_i:[日志列表]}}}

def fillWellTree(self, parent, dico):
        if isinstance(dico, dict):
            for key, value in dico.items():
                item1 = QStandardItem(str(key))
                if isinstance(value, dict):
                    parent.appendRow(item1)
                    self.fillWellTree(item1, value)
                elif isinstance(value, list):
                    parent.appendRow(item1)
                    for val in value:
                        item_i=QStandardItem(val)
                        item1.appendRow(item_i)

例如,尝试类似下面的代码作为测试只会阻止 item_i 出现在树中:

def fillWellTree(self, parent, dico):
        if isinstance(dico, dict):
            for key, value in dico.items():
                item1 = QStandardItem(str(key))
                if isinstance(value, dict):
                    parent.appendRow(item1)
                    self.fillWellTree(item1, value)
                elif isinstance(value, list):
                    parent.appendRow([QStandardItem(""),item1])
                    for val in value:
                        item_i=QStandardItem(val)
                        item1.appendRow(item_i)

任何提示或帮助将不胜感激 谢谢你

编辑以防对某人有帮助: 最后在其中一个帖子中发现了问题:只有第一列项目才会显示子项目。 因此,测试中的解决方案是使用 QStandardItem 列表,第一列中包含空项目。父项必须是列表的第一项(类似于: itemlist1[0].appendRow(itemlist2))

如果有更好的方法,我愿意接受所有评论 谢谢你

python pyqt6 qtreeview
1个回答
1
投票

答案在问题的编辑中:

只有第一列项目才会显示子项目。因此,测试中的解决方案是使用 QStandardItem 列表,第一列中包含空项目。父项必须是列表的第一项(类似于: itemlist1[0].appendRow(itemlist2))

© www.soinside.com 2019 - 2024. All rights reserved.