LINUX.ORG.RU

О «серебрянной пуле» или создание универсальной модели

 , ,


2

3

Здравствуйте.

По примерам MVC, у меня сложилось впечатление, что для каждого набора данных, разработчики делают новую модель, наследуемую от QAbstractItemoModel.

У меня в проекте имеется несколько независимых моделей, которые нужно отображать в виде дерева. Из общего у них только размерность дерева — два. Есть мысль сделать одну модель данных и инициализировать её мультимапом с ключом в качестве элемента верхнего уровня и его[ключа] значениями в качестве детей.

Что скажет уважаемое сообщество, стоит ли овчинка выделки? Какие подводные камни скрываются за этим решением.


У меня получилось реализовать подобное где-то за два часа. Из которых час ушёл на въезжание в архитектуру QAbstractItemModel.

Adonai ★★★ ()

Посмотри как это реализовано в Clementine, там шаблонный класс использует CRTP (идиома curiously recurring template pattern), называется то ли BasicTreeItem/Model, то ли SimpleTreeItem/Model (уже не помню точно). Я в свое время сделал нечто подобное и большинство моих нужд оно покрывает.

m0rph ★★★★★ ()

Хардкорщики-моделисты часто страдают одной из форм наркомании, называемой “одержимость метаданными”. О, это соблазнительный процесс. Он не заставляет вас никуда торопиться. Вам не нужно делать ничего сложного. Для каждой новой вещицы будет своя коробочка. С другой стороны, использовать немного метаданных имеет смысл (будь это коменты, статические типы или модели данных). Люди могут общаться, используя термины из модели, или машины могут использовать эти метаданные, чтобы потюнить производительность программ. Тем не менее, удивительно большое число разработчиков в отрасли слишком сильно перегибают палку, вместо реальных дел предпочитая эти дела описывать.

Стив Йегг, «Портрет нуба»

linuxnewb ()
Ответ на: комментарий от h0x0d9

Да, я за. Больше всего мук будет с QModelIndex, потом будет прозрение и все пойдёт гладко

Adonai ★★★ ()

В Qt MV без C. В порядке уточнения.

antares0 ★★★★ ()

Что скажет уважаемое сообщество, стоит ли овчинка выделки?

Я так понимаю ты хочешь сделать шаблонный класс модели?

MikeDM ★★★★★ ()
Ответ на: комментарий от MikeDM

Это не класс-шаблон — нет шаблонный данных, нет шаблонных функций. Два уровня иерархии в комплекте и инициализация их пользовательским мультимапом.

h0x0d9 ()

В результате уперся в определение числа колонок. Если я прав, реализации разного числа колонок для элементов верхнего и вложенного уровней потребует переписывания View. Я прав?

h0x0d9 ()
Ответ на: комментарий от h0x0d9

Вообще говоря нет. Обычно те колонки, которые не относятся
к текущему уровню вложенности просто оставляют пустыми.

trex6 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.