MVC Mouse события в виду дизайна вопроса - PullRequest
1 голос
/ 12 января 2011

Это вопрос разработки, касающийся реализации MVC. Я создаю приложение для 2D-графики с использованием QT и OpenGL, но я не думаю, что технология имеет значение.

Таким образом, мой вид - это виджет openGL, все, что должно быть нарисовано, хранится в модели, и контроллер должен изменить модель и заставить виджет OpenGL перерисовать сцену.

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

Я обсуждаю два подхода, инкапсулирую обработку мыши внутри виджета OpenGL и просто сообщаю о щелчке и перетаскиваю обратно в контроллер? Или передайте события мыши как есть на контроллер и позвольте ему обрабатывать всю логику для определения щелчков и перетаскиваний.

Любой совет очень ценится. Спасибо

1 Ответ

0 голосов
/ 04 марта 2011

Я думаю, что виджет будет получать координаты мыши в системе координат области просмотра / просмотра пространства, что может не иметь особого смысла для контроллера. Я думаю, что ваш виджет должен преобразовать координаты любых кликов и перетаскиваний в мировое пространство, а затем передать их контроллеру.

Почему это хорошо? Потому что это избавляет ваш контроллер от необходимости специальных знаний о области просмотра / виджете и сохраняет инкапсуляцию. Если вы добавите еще несколько видовых экранов / виджетов или, может быть, даже консоль или скрипт, который также хочет кормить контроллер, все они могут передать свои «инструкции» в мировом пространстве, и контроллер будет функционировать довольно успешно. Ваш видовой экран уже "осведомлен" о "мировом пространстве" и "космическом пространстве", или он не мог отобразить вашу модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...