Как отобразить две модели Qt с использованием внешних данных в одном древовидном представлении - PullRequest
0 голосов
/ 15 февраля 2011

Я работаю над проектом C ++ / Qt. У меня есть две бизнес-модели (одна представляет собой иерархическую древовидную структуру, т.е. категории / подкатегории фильмов, а другая - простой вектор, т.е. названия фильмов, которые могут принадлежать только подкатегории), и я хочу отобразить обе уникальное древовидное представление, где листовые узлы могут принадлежать обеим моделям, а неконечные узлы принадлежат первой модели. В дополнение к этому представлению я также хочу отобразить в представлениях, специфичных для модели, древовидное представление для первой модели и представление списка для второй.

Я рассмотрел 3 подхода:

1) Создайте одну QAbstractItemModel для каждой бизнес-модели и другую для представления смешанной модели. Таким образом, каждый вид связан только с одной моделью.

2) Создайте только два QAbstractItemModel для каждой бизнес-модели и реализуйте специальное представление, которое имеет дело с этой информацией.

3) Используйте модель QStandardItem и реализуйте подклассы QStandardItem для обоих элементов моей бизнес-модели.

Поскольку я работаю с внешними данными, я не хочу дублировать любую информацию, если это возможно.

Какой, по вашему мнению, лучший / правильный подход? Любые советы по реализации?

Ответы [ 2 ]

0 голосов
/ 19 мая 2011

Сделайте одну модель из ваших данных.Я бы сделал одну древовидную модель, которая является вариантом c вашего выбора, но могла бы реализовывать вашу собственную древовидную модель.

Для представления списка, посмотрите, не можете ли вы установить на него и древовидную модельи используйте setRootIndex , чтобы показать только список элементов, которые вы хотите увидеть.Я знаю, что он работает в табличном и древовидном представлениях, поэтому я предполагаю, что он также будет работать и в виде списка.

0 голосов
/ 19 мая 2011

QDataWidgetMapper - ваша лучшая ставка в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...