Russian Qt Forum
Ноябрь 23, 2024, 07:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Каким паттерном является Qt Model-View?  (Прочитано 11025 раз)
zzzseregazzz
Гость
« : Сентябрь 25, 2013, 09:05 »

Есть паттерн Model-View-Controller. Но в документации по Qt про Controller ничего не сказано.
Где потерялся Controller?
Записан
Bepec
Гость
« Ответ #1 : Сентябрь 25, 2013, 09:20 »

Контроллером тут является делегат, насколько я понял, почитав статью на вики про M-V-C.

Model хранит данные.
View отображает.
Делегат позволяет изменять и манипулировать данными.
Записан
mutineer
Гость
« Ответ #2 : Сентябрь 25, 2013, 10:09 »

Контроллер тут размазан между view и model
Записан
Bepec
Гость
« Ответ #3 : Сентябрь 25, 2013, 10:10 »

View же ничего не изменяет. Это делает делегат как бы. Разве нет?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Сентябрь 25, 2013, 10:17 »

Контроллер полностью пишется пользователем, таких заготовок как Q...View и Q...Model просто не предусмотрено.

Записан
mutineer
Гость
« Ответ #5 : Сентябрь 25, 2013, 10:45 »

View же ничего не изменяет. Это делает делегат как бы. Разве нет?

Дефолтный делегат создается вьюшкой и спрятан от пользователя именно во вью. Я исходя из этого говорил
Записан
Bepec
Гость
« Ответ #6 : Сентябрь 25, 2013, 10:48 »

Ну тогда вердикт, что во View спрятан контроллер.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #7 : Сентябрь 25, 2013, 11:28 »

Ну тогда вердикт, что во View спрятан контроллер.

Делегат не является контроллером, в терминах данного паттерна.
« Последнее редактирование: Сентябрь 25, 2013, 11:37 от Old » Записан
Bepec
Гость
« Ответ #8 : Сентябрь 25, 2013, 12:22 »

Old поясните пожалуйста, почему нет?

Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать. - Q*Model

Представление, вид (англ. View). Отвечает за отображение информации (визуализацию). Часто в качестве представления выступает форма (окно) с графическими элементами. - Q*View

Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции. - При редактировании ячейки создаётся делегат, предоставляет ввод данных пользователю  и -//-.

Пока не могу принять вашу точку мнения без аргументов.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Сентябрь 25, 2013, 12:38 »

Простой пример - юзер хочет удалить строку (ф-ционал контроллера). Отсюда видно что никаким контроллером делегат не является
Записан
Bepec
Гость
« Ответ #10 : Сентябрь 25, 2013, 12:47 »

Невнятный пример, но смысл понял.

Часть функций контроллера имеются у делегата, но полностью он им не является.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Сентябрь 25, 2013, 13:41 »

Невнятный пример, но смысл понял.
Если Вы поняли - то очень внятный  Улыбающийся
Записан
Bepec
Гость
« Ответ #12 : Сентябрь 25, 2013, 13:49 »

Не будем оценивать внятность примера по моей понятливости Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #13 : Сентябрь 25, 2013, 14:47 »

Old поясните пожалуйста, почему нет?
Роль контроллера управлять моделью и видом: настроить отображение, сортировки/фильтры, добавление/удаление записей и т.д.
А делегат это по сути возможность более удобно настроить вид для конкретной задачи. Например, пользователю нужно иметь возможность редактировать данные прямо в таблице, но мы можем запретить такое редактирование в виде и открывать для этого диалог.
Записан
Bepec
Гость
« Ответ #14 : Сентябрь 25, 2013, 14:49 »

Благодарю за объяснение. Осознал.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.1 секунд. Запросов: 23.