Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Steven_Orko от Декабрь 26, 2005, 19:45



Название: Model/View Programming
Отправлено: Steven_Orko от Декабрь 26, 2005, 19:45
Подскажите, что можно почитать на русском, чтобы понять, как это устроенно в Qt? как строить собственные модели и т.п. С английским большая проблемма...


Название: Model/View Programming
Отправлено: Racheengel от Декабрь 27, 2005, 12:09
Я думаю, там и русский не поможет.... ИМХО так тупо реализовать - надо еще додуматься...


Название: Model/View Programming
Отправлено: Steven_Orko от Декабрь 27, 2005, 16:43
ну а все-таки??? Какое-нибудь понятное описание для использования этого механизма гденть есть?  :)


Название: Model/View Programming
Отправлено: Sergeich от Декабрь 27, 2005, 16:47
Для начала можешь посмотреть перевод статейки из QQ : http://hardclub.donntu.edu.ua/projects/qt/qq/qq10-mvc.html


Название: Model/View Programming
Отправлено: Racheengel от Декабрь 28, 2005, 11:18
Пробовал вчера разобраться с этим чудом...
Вроде идею понял, но... НАХРЕНА ТАК УСЛОЖНЯТЬ????
Если глубоко подумать над всем этим... Понятие модели совсем лишнее, проще напрямую обмениваться данными с делегатом... Да и не понятно, как можно для одной модели поставить несколько делегатов (если вообще можно).
Кто-нить это юзал вообще?


Название: Model/View Programming
Отправлено: Steven_Orko от Декабрь 28, 2005, 12:40
Да, теперь уже я юзаю.  :) ))) Создал новую модель и виджет наподобии QTableWidget. Только со своими отдельными свойствами. А так в общем ОЧЕНЬ пожий на QTableWidget. По ссылке Sergeich как пример было, кажется, написано, как использовать несколько делеагатов. Не помню, вчера ночью читал  :wink: ))). А так ты действительно прав... зачем так усложнять? Особенно,е сли использовать абстрактные классы для отображения в таблице, дереве, списке и т.д.? Если кому надо, могу потом как-нибудь текст  виджета выложить куда-нибудь, если интересно... но это как допишу )))


Название: Model/View Programming
Отправлено: Racheengel от Декабрь 28, 2005, 13:51
мне реально нужна ПРОСТАЯ вещь. Есть несколько объектов, которые надо отобразить в виде дерева. Но во первых, надо максимально просто их добавлять, во-вторых, отрисовывать ПО-РАЗНОМУ. Но мы имеем лишь один делегат на одну модель, а QTreeWidgetItem не позволяет выполнять собственную отрисовку, как это было в 3-й версии :( Только чтобы сделать это, мне надо фигачить свою модель, в нее вставлять свой список, делать методы для доступа к нему... жуть...


Название: Model/View Programming
Отправлено: Steven_Orko от Декабрь 28, 2005, 13:56
Слушай, так это есть в примерах к Qt... посмотри  реализацию простой  модели для дерева... Кажется "itemviews/simpletreemodel/treeitem.cpp", ну и так далее... там разберешься )))


Название: Model/View Programming
Отправлено: Racheengel от Декабрь 28, 2005, 14:10
Да я разобрался, просто это все равно, что "из пушки по воробьям".... не вяжется со слоганом троллей "code less - create more"


Название: Model/View Programming
Отправлено: Sergey B. от Август 07, 2007, 11:18
Ну вот, понабрались опыта, теперь как уже опытные Model\View кодеры, давайте поговорим о недостатках реализации в Qt этого чуда.
Я использовал модели только в Java (акромя Qt), должен сказать, что работа моделей с отображениями, намного проще.
К примеру:
есть список, есть модель, даже вставляя данные в модель,  я всегда могу сделать list.getSlectedItem() И получить значение текущего элемента, в Qt надо ловить в model currentIndex... :(, и из него уже получать значение
В принципе терпимо, только кода больше...


Название: Model/View Programming
Отправлено: Gryz от Август 07, 2007, 11:49
Но ведь необходимые часто используемые методы можно самому реализовать. Всё для этого есть.


Название: Model/View Programming
Отправлено: SABROG от Август 07, 2007, 16:47
Цитата: "Sergey B."
Ну вот, понабрались опыта, теперь как уже опытные Model\View кодеры, давайте поговорим о недостатках реализации в Qt этого чуда.
Я использовал модели только в Java (акромя Qt), должен сказать, что работа моделей с отображениями, намного проще.
К примеру:
есть список, есть модель, даже вставляя данные в модель,  я всегда могу сделать list.getSlectedItem() И получить значение текущего элемента, в Qt надо ловить в model currentIndex... :(, и из него уже получать значение
В принципе терпимо, только кода больше...


Мне кажется в Qt понятия разделены. Одно дело компонент для работы с итемами и другое - источник, хранилище данных. Задача компонента работать с представлением итема, а задача модели с его содержимым. Поэтому понятие выделенный и текущий элемент относится к компоненту, а не к модели. Сегодня это один компонент показывающий данные одной модели и позволяющий выделять элементы, а завтра это другой компонент показывающий данные модели, но позволяющий элементы не выделять, а приближать или отдалять в 3х мерном пространстве. И будет глупо требовать от модели показать какие итемы были приближены или отдалены.