Qt Model / View программирование со сложными структурами данных - PullRequest
3 голосов
/ 04 августа 2009

Я не профессиональный разработчик приложений, поэтому, вероятно, я не настолько знаком с шаблоном дизайна модели / представления, как следовало бы. Тем не менее, я пытаюсь использовать его в приложении для хобби и с треском проваливаюсь. Основная проблема, с которой я сталкиваюсь, заключается в том, что данные, которые я пытаюсь отобразить и изменить, нелегко представить с расширением QAbstractItemModel.

Данные, которые я пытаюсь инкапсулировать, представляют собой растущий / сжатый, изменяемый список целых чисел. Должен ли я отказаться от модели модель / представление для таких данных? Это представляется более уместным, когда «размеры» данных фиксированы. Если нет, то есть ли пример реализации, на которую я мог бы взглянуть, или хорошая книга, которую я должен взять?

С уважением.

Ответы [ 2 ]

3 голосов
/ 04 августа 2009

Я бы посмотрел на QAbstractListModel . Звучит как более актуальная модель, чем базовая QAbstractItemModel.

Существует также несколько иной вид этой модели в примере: Puzzle

Если вам нужен более высокий уровень взгляда на модель / вид, проверьте это .

0 голосов
/ 04 августа 2009

QAbstractItemModel - это только один, по общему признанию, очень ограниченный способ реализации шаблона проектирования Модель / Представление. Если вы видите, что ваша ситуация не подходит ей аккуратно, не трудитесь слишком усердно, чтобы заставить ее.

Лучшим подходом для вас, вероятно, было бы просто использовать свой собственный класс Model с собственными классами View и отказаться от QAbstractItemModel. В этом шаблоне проектирования есть нечто большее, чем странный вариант, реализованный в QT, и этот вариант подходит только для очень специфических приложений.

Я предлагаю вам прочитать об этом еще и спроектировать свою собственную настройку Model-View. Дизайн вашего класса, скорее всего, будет чище и понятнее, если вы потянете за себя.

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