我正在尝试实现这样的树视图
使用 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))
如果有更好的方法,我愿意接受所有评论 谢谢你
答案在问题的编辑中:
只有第一列项目才会显示子项目。因此,测试中的解决方案是使用 QStandardItem 列表,第一列中包含空项目。父项必须是列表的第一项(类似于: itemlist1[0].appendRow(itemlist2))