Qt модель / вид с использованием элемента модели: требуется ли конкретный элемент вида? - PullRequest
1 голос
/ 19 сентября 2011

Я собираюсь реализовать нечто подобное: http://doc.qt.nokia.com/latest/itemviews-simpletreemodel.html

У меня есть тип, aosl :: Object, который содержит все данные узла в дереве объектов.

Я хочу отобразить некоторую информацию в QTreeView.Поэтому мне кажется, что мне нужно реализовать класс, унаследованный от QAbstractItemModel, чтобы позволить представлениям использовать данные.Все идет нормально.Этот класс будет похож на класс TreeItemModel в этом примере.

Однако в этом примере они также реализуют класс TreeItem, который, кажется, содержит данные, необходимые для узла дерева.Это не QObject или что-то связанное с Qt - вот откуда у меня возникают сомнения.

Итак, вопрос в том, должен ли я иметь другой тип, кроме моего типа aosl :: Object внутри моего QAbstractItemModel, или яиспользовать его как есть, не добавляя еще один тип "item"?

Ответы [ 2 ]

2 голосов
/ 19 сентября 2011

Внешний интерфейс QAbstractItemModel работает исключительно на QModelIndex и QVariant - никакая внутренняя структура не предоставляется классу представления. Пока ваш класс (aosl :: Object) может предоставить всю информацию, необходимую для реализации вашего потомка QAbstractItemModel, вам не нужно заключать его в QObject или как-либо еще.

1 голос
/ 19 сентября 2011

Если вы посмотрите на класс TreeModel, вы увидите, что он действует как мост между TreeItem и QAbstractItemModel.Используя этот шаблон, TreeItem не зависит от QAbstractItemModel, а QAbstractItemModel не зависит от TreeItem.

Это полезный шаблон, потому что он делает ваше приложение менее сложным.В вашем случае, например, это означает, что ваш aosl::Object класс не нужно менять только потому, что вы хотите показать его в дереве (QAbstractItemModel).

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