2016-07-31 3 views
1

enter image description hereОтображение одного дерева данных в двух разных точках

Приветствуем всех.

  1. У меня есть дерево предметов, как показано на рисунке выше (Дерево элементов).
  2. Мне нужно отобразить это дерево так, как показано на изображении (Просмотры). Он имеет два вида, вид дерева и список. В представлении дерева должно отображаться все дерево элементов, а в представлении списка должны отображаться свойства для выбранного элемента в древовидном представлении. (На изображении отображаются свойства для элемента cat)
  3. Способ, которым он реализован прямо сейчас, отображается в части «Текущая реализация» изображения. TreeModel содержит дерево элементов, и когда вы нажимаете на элемент в TreeView, текущий элемент отправляется в ListModel для отображения его свойств.

Проблема, с которой я сталкиваюсь, заключается в том, что в обоих случаях элементы редактируются. В древовидной структуре вы можете редактировать имена элементов, и это изменение должно появиться и в виде списка. То же самое происходит в противоположном направлении. Изменение имени элемента Cat должно отражать элемент cat treeView. Поскольку это две разные модели, изменение производится только при наведении курсора на другой вид. Что я сейчас делаю для измененного элемента в одном из представлений, я ищу элемент в другом представлении через QModelIndex :: match(), а затем просто обновляю эту часть представления через emit dataChanged(). Я не уверен, что это хороший способ. Поэтому, если возможно, вы можете дать мне несколько идей о том, как это можно сделать лучше. Спасибо.

ответ

1

У вас должна быть только одна модель. Метод QAbstractItemView::setRootIndex - это все, что вам нужно: вы можете установить текущий элемент в дереве в качестве корня для представления таблицы. Кроме того, вы можете использовать прокси-модель для адаптации данных для отображения в определенной форме.

+0

Это будет работать. спасибо –

Смежные вопросы