Программирование Qt Model/View со сложными структурами данных

StackOverflow https://stackoverflow.com/questions/1225124

  •  22-07-2019
  •  | 
  •  

Вопрос

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

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

С уважением.

Это было полезно?

Решение

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

В примере также представлен несколько иной взгляд на эту модель: Головоломка

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top