Название: QTreeView + Model: начало Отправлено: Danila_Bagrofff от Май 22, 2012, 17:13 Достаточно много работал с вьюшками других типов, но вот с деревом сталкиваюсь в первый раз.
Подскажите, какой формат модели выбрать для следующей задачи. Необходимо отобразить в дереве информацию следующего вида: Д - док-т со своим набором атрибутов (атр) П - папка, куда входит документ - свой набор атрибутов Примерно должно выглядеть так Д1/атр1/атр2/атр3/ ---П1/атр4/атр5/атр6 Д2/атр1/атр2/атр3 --П1.... --П2... --П3 Д3... --П2 --П4 Как нужно подготовить данные, чтобы можно было построить такое дерево? В каком формате хранить? Как учитывается связь между Д и П? Какую модель надо использовать для такого решения? Раньше данные свободно хранил к примеру в формате QList<QStringList> для отображения в таблице. Ну или напрямую с сиквелом. Сейчас я должен как-то представлять данные для модели и никак не определюсь, как. Связи хранить отдельно? Раньше все данные можно было взять в модели в data(). Как быть теперь?) Помогите стартануть - дальше, уверен, пойдет проще =) Название: Re: QTreeView + Model: начало Отправлено: sergek от Май 25, 2012, 23:13 Цитировать Д1/атр1/атр2/атр3/ ---П1/атр4/атр5/атр6 ... Как нужно подготовить данные, чтобы можно было построить такое дерево? В каком формате хранить? Название: Re: QTreeView + Model: начало Отправлено: RVZ от Июнь 03, 2012, 15:28 Я наверное присоединюсь к теме со своими проблемами... в общем леплю модель деревянную.
И так во всех ранее рассмотренных примерах данные забивались сначала в какой нибудь класс с QList (Куда засовывались потомки) - удобно! но Подразумевается одинаковое количество столбцов на всех уровнях (ну или наличие полей в классе... если я все правильно понял) Очень хочется этот класс не использовать. В общем как выяснилось отсутствует понимание механизма взаимодействия представления с моделью. Например что делают функции index ???? и parent ???? Как опрашивается модель? что есть на данном этапе Таблица типа oid; id; p_id; p_type; o_ex 76391; 1; 1; 1; 3 76392; 2; 1; 1; 3 76393; 3; 1; 1; 3 76394; 4; 2; 1; 3 76395; 5; 3; 1; 3 83764; 6; 3; 1; 3 oid - это от движка PG. еще не определился нужны будут или нет но решил пока оставить. id - первичный ключ (уникальный). p_id - число соответствующее первичному ключу предка. p_type - это тип (по нему будет определятся какая таблица должна подтягиваться к o_ex) o_ex - id внешней таблицы. модель на данном этапе получилась такой. Шапка Код
C плюшка Код
Она просто зацикливаться ни как не хотит увеличиваться номер строки передаваемый в функцию index Что делать где лечить???? P.S. Заранее всем спасибо. Название: Re: QTreeView + Model: начало Отправлено: RVZ от Июнь 03, 2012, 23:45 Ура товарищи я ЕЕ победил.
итак помогла информация расположенная тут - http://doc.crossplatform.ru/qt/4.5.0/model-view-model.html на мой взгляд самое точное описание и руководство. само определение скопирую что бы было под рукой (то есть тут) Цитировать Резюме концепций * Модельные индексы дают представлениям и делегатам информацию о размещении элементов, предоставляемых моделью, и независимую от структуры данных. * Элементы определяются номерами строк и столбцов и модельным индексом их родительских элементов. * Модельные индексы создаются моделями по требованию других компонентов, таких как представления и делегаты. * Если при вызове функции index() в качестве родительского элемента передается действительный модельный индекс, то возвращаемый индекс ссылается на элемент, находящийся ниже в иерархии модели, чем родитель. Полученный индекс ссылается на дочерний элемент этого индекса. * Если в качестве родительского элемента функции index() передается недействительный модельный индекс, то возвращаемый индекс ссылается на элемент верхнего уровня. * Роль различается для различных видов данных, связанных с элементом. что бы не плодить лишних кодов исправлю текст исходника в предыдущем посте. на данный момент модель осуществляет навигацию по приведенной таблице нормально (правда столбец пока только один... но модель в разработке :-) ). Название: Re: QTreeView + Model: начало Отправлено: sergek от Июнь 04, 2012, 20:21 Есть посвежее:
http://qt-project.org/doc/qt-4.8/modelview.html (http://qt-project.org/doc/qt-4.8/modelview.html). http://qt-project.org/doc/qt-4.8/examples-itemviews.html (http://qt-project.org/doc/qt-4.8/examples-itemviews.html) - документированные примеры (со звездочкой). Еще полезная статья http://doc.trolltech.com/qq/qq10-mvc.html (http://doc.trolltech.com/qq/qq10-mvc.html) (перевод-http://wiki.crossplatform.ru/index.php/Реализация_Model/View/Controller (http://wiki.crossplatform.ru/index.php/Реализация_Model/View/Controller)) иллюстрирующая, например, как переустанавливать обработчики сигналов. |