Qt 嵌套QStandardItemModel的最佳实践,其子级需要不同的头

Qt 嵌套QStandardItemModel的最佳实践,其子级需要不同的头,qt,pyqt,pyside,pyside2,Qt,Pyqt,Pyside,Pyside2,我想知道您对QStandardItemModel最佳实践的看法,who的顶级项目可能包含在另一个视图中最好表示的子项,who的水平标题标签可能需要与子项完全不同 让我们举一个例子,其中有QTreeViewA和QTreeViewB 要明确的是,这不是一个字面上的例子。在我的实际程序中,QTreeViewA中顶级项目的数量永远不会超过10个,而QTreeViewB中的子项通常会少于50个。表示的数据通过JSON加载和保存 在QTreeViewA中,我们希望列出宠物主人和一些人口统计信息,但当我们展开

我想知道您对QStandardItemModel最佳实践的看法,who的顶级项目可能包含在另一个视图中最好表示的子项,who的水平标题标签可能需要与子项完全不同

让我们举一个例子,其中有QTreeViewA和QTreeViewB

要明确的是,这不是一个字面上的例子。在我的实际程序中,QTreeViewA中顶级项目的数量永远不会超过10个,而QTreeViewB中的子项通常会少于50个。表示的数据通过JSON加载和保存

在QTreeViewA中,我们希望列出宠物主人和一些人口统计信息,但当我们展开项目时,我们希望看到他们宠物的列表:

Pet Owner Name | Age              | Gender | Location
-----------------------------------------------------------------
[+] Rich       | 18               | M      | Los Angeles, CA    
[-] Jane       | 25               | F      | San Francisco, CA
     Dog       |   Border Collie
     Dog       |   Golden Retriever
[-] Jim        | 83               | M      | London, UK
     Cat       |   Calico
在QTreeViewB中,我们希望在选择QTreeViewA中的宠物所有者时填充视图的项目,并显示一些附加信息

QTreeViewB看起来像:

Pet Type | Breed            | Fur Color     | Age  | Eye Color
------------------------------------------------------------------
    Dog  | Border Collie    | Black & White | 5    | Blue
    Dog  | Golden Retriever | Golden        | 7    | Brown
我在设定构建模型的最佳实践时遇到了一些问题

如果我只是使用相同的模型,并将宠物的QStandardItems作为所有者的QStandardItems的子项-我很难找到有关如何将QTreeViewB的水平标题标签更改为不同于QTreeViewA的标签的信息,因为它们是相同的模型

这让我想问一个问题,这通常是错误的做法吗?你会建议某人如何构建这样一个不一致的层次模型?我是否过度复杂了模型,我是否应该有多个模型

然而,我应该补充一点,在我的特殊情况下,除了TreeViewer中的第一列之外,我实际上不需要表示任何东西。在我的真实示例中,当选择“宠物主人”项时,会填充QTreeViewB,但其他几个QLineEdit/QComboBox/QSpinBox小部件也会填充,它们通过QDataWidgetMapper链接到“宠物主人”行中的项


您将如何处理此问题?

请记住,基于意见的问题在堆栈溢出时被视为离题。为了增加从周围人那里获得帮助的机会,我建议您重新设计您的问题,将重点放在一个特定的问题上,并以一个最小且可验证的代码示例的形式分享解决问题的尝试。谢谢,这可能是问问题的更好方式(或者我应该先问的问题)可能是:我有一个QStandardItemModel,在不同的视图中需要不同的水平标题标签。是否可以通过这种方式将QTreeView的标头与模型解耦?如果答案是否定的——我可能需要一些关于我在构建模型的方式上做错了什么的指针。是的,这听起来更合适。