Название: Как сделать заголовки различными на каждом уровне в модели ? Отправлено: aljeshishe от Декабрь 03, 2009, 19:29 Есть древовидная модель: список пользователей, каждый пользователь содержит список папок, каждая папка содержит список сообщений. Естественно у каждого уровня данных различный набор полей:
у пользователей и папок - 2, у сообщений ~10, не совпадающих по смыслу. Например количество содержащихся элементов есть у пользователя и у папки но нет у сообщения. Модель отображается в двух QTreeView, по типу The Bat (слева пользователи/папки, справа сообщения) Столкнулся с тем что QAbstractItemModel::headerData должен возвращать одинаковый заголовок независимо от уровня в модели. Подскажите как сделать так, что бы в деревьях правильно отображались заголовки: в левом - имя, количество, в правом - тема, дата, отправитель, получатель и т.д. Название: Re: Как сделать заголовки различными на каждом уровне в модели ? Отправлено: lit-uriy от Декабрь 03, 2009, 19:38 снимок бы этого Bat'а, а то я не понял как выглядеть должно
Название: Re: Как сделать заголовки различными на каждом уровне в модели ? Отправлено: aljeshishe от Декабрь 03, 2009, 19:46 The bat
Название: Re: Как сделать заголовки различными на каждом уровне в модели ? Отправлено: spectre71 от Декабрь 03, 2009, 20:01 Есть древовидная модель: список пользователей, каждый пользователь содержит список папок, каждая папка содержит список сообщений. Естественно у каждого уровня данных различный набор полей: у пользователей и папок - 2, у сообщений ~10, не совпадающих по смыслу. Например количество содержащихся элементов есть у пользователя и у папки но нет у сообщения. Модель отображается в двух QTreeView, по типу The Bat (слева пользователи/папки, справа сообщения) Столкнулся с тем что QAbstractItemModel::headerData должен возвращать одинаковый заголовок независимо от уровня в модели. Подскажите как сделать так, что бы в деревьях правильно отображались заголовки: в левом - имя, количество, в правом - тема, дата, отправитель, получатель и т.д. Еще вопросик назрел, по описанной модели, точнее по представлению, поэтому отдельную тему решил не создавать. В левом дереве должны отображаться пользователи/папки, но не должны отображаться сообщения. Как это реализовать. Думал в сторону QSortFilterProxyModel и его filterAcceptsRow. Еще была идея наследования от QTreeView, с последующей заменой виртуальных функций (правда не разобрался каких конкретно). В результате пока остановился на более простом expandToDepth (0) и установке setItemsExpandable ( false) (правда в этом случае у папок остаются плюсики сбоку). Посоветуйте что лучше. Не обязательно для обоих View должна быть одна модель! Источник данных у тебя один, но моделей может быть и больше. Название: Re: Как сделать заголовки различными на каждом уровне в модели ? Отправлено: lit-uriy от Декабрь 03, 2009, 20:10 >>Еще вопросик ... точнее по представлению, поэтому отдельную тему решил не создавать.
А лучше создать, т.к. ищущему ответ на свой вопрос неудобно его выковыривать из темы-каши. Название: Re: Как сделать заголовки различными на каждом уровне в модели ? Отправлено: spectre71 от Декабрь 03, 2009, 20:13 >>Еще вопросик ... точнее по представлению, поэтому отдельную тему решил не создавать. А лучше создать, т.к. ищущему ответ на свой вопрос неудобно его выковыривать из темы-каши. Угу. :) Но в данном случае 2 модели решают обе проблемы. Название: Re: Как сделать заголовки различными на каждом уровне в модели ? Отправлено: aljeshishe от Декабрь 03, 2009, 20:19 А лучше создать, т.к. ищущему ответ на свой вопрос неудобно его выковыривать из темы-каши. Отредактировал.Я считал что MVC нужна в том числе и для того что бы одну модель модель можно было различным образом отображать в разных представлениях. Что то мне подсказывает, что если разделить модели получится не очень хорошо, хотя хз надо продумаь этот вопрос. Неужели нет другого способа отобразить различные заголовки? Название: Re: Как сделать заголовки различными на каждом уровне в модели ? Отправлено: lit-uriy от Декабрь 03, 2009, 20:25 >>Но в данном случае 2 модели решают обе проблемы.
В общем да, судя по картинке, можно, две модели-посредники сделать |