【问题标题】:Display one data tree in two different views在两个不同的视图中显示一棵数据树
【发布时间】:2016-07-31 20:44:27
【问题描述】:

大家好。

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

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

【问题讨论】:

    标签: qt model-view-controller


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2016-03-16
      • 2019-01-20
      • 1970-01-01
      相关资源
      最近更新 更多