我想知道您对QStandardItemModel的最佳做法的看法,他们的顶级项目可能包含在另一个视图中最佳代表的孩子 - 并且可能需要有哪些水平标题标签与孩子完全不同。
让我们举个例子,我们有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,因为他们是相同的模型。
这导致我问这个问题,这通常是错误的方法吗?你会如何推荐某人构建这样的不符合要求的分层模型?我是否过度复杂模型,我应该有多个模型吗?
但是,我应该在我的特定情况下添加 - 除了treeViewA中的第一列之外,我实际上并不需要代表任何其他内容。在我的真实例子中 - 当"宠物主人"选择了项目,QTreeViewB被填充,但是其他几个QLineEdit / QComboBox / QSpinBox小部件也被链接到" Pet Owner"中的项目。带有QDataWidgetMapper的行。
你会怎么做?