嵌套QStandardItemModel的最佳做法,其子项需要不同的标题

时间:2018-04-19 07:03:55

标签: qt pyqt pyside pyside2

我想知道您对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的行。

你会怎么做?

0 个答案:

没有答案