2016-07-31 93 views
1

enter image description here在两个不同视图中显示一个数据树

大家好。

  1. 我有一个项目树如上图​​所示(项目树)。
  2. 我需要以图像(视图)上显示的方式显示此树。它有两个视图,树视图和列表视图。树视图应显示整个项目树,列表视图应显示树视图中所选项目的属性。 (在图像上显示猫物品的属性)
  3. 它现在实现的方式显示在图像的“当前实现”部分。 TreeModel包含项目树,并且当您单击TreeView中的项目时,当前项目将被发送到ListModel以显示其属性。

我在这里遇到的问题是在两个视图中项目都是可编辑的。在树状视图中,您可以编辑项目的名称,并且此更改也应显示在列表视图中。对于相反的方向也是一样。更改Cat项目的名称应反映在treeView猫项目上。 由于它是两种不同的模型,只有当您将鼠标悬停在另一个视图上时才会进行更改。 我目前所做的是在一个视图中更改的项目,我通过QModelIndex :: match()搜索另一个视图中的项目,然后通过发出dataChanged()更新该视图的一部分。我不确定这是一个好方法。所以如果你可以给我一些关于如何做得更好的想法。 谢谢。

回答

1

您应该只有一个模型。您只需要QAbstractItemView::setRootIndex方法:您可以将树中的当前项设置为表视图的根。或者,您可以使用代理视图模型来调整数据以便以特定形式显示。

+0

这将工作。谢谢 –