2011-01-12 3 views
1

이것은 MVC 구현에 관한 디자인 질문입니다. QT와 OpenGL을 사용하여 2D 그래픽 응용 프로그램을 만들고 있지만 기술이 중요하지 않다고 생각합니다.MVC 마우스 이벤트보기 디자인 질문

내보기는 OpenGL 위젯입니다. 그려지는 것은 무엇이든 모델에 저장되며 컨트롤러는 모델을 수정하고 OpenGL 위젯에서 장면을 다시 그려야합니다.

뷰는 마우스 이벤트 MouseRelease, MouseDown 및 MouseMove를 캡처 한 다음 컨트롤러로 전송하여 사용자가 마우스를 클릭하거나 끌 때 수행 할 작업을 결정해야합니다.

나는 두 가지 접근 방식 사이에서 논쟁을하고 있으며, OpenGL 위젯 내부에서 마우스 처리를 캡슐화하고 단지 클릭을보고하고 컨트롤러로 다시 드래그합니까? 또는 마우스 이벤트를있는 그대로 컨트롤러로 전송하고 모든 논리를 처리하여 클릭 수와 끌 수를 결정하십시오.

조언은 매우 감사합니다. 감사합니다.

답변

0

위젯이 뷰포트/뷰 공간 좌표계에서 마우스 좌표를 가져 오는 것 같아 컨트롤러에별로 적합하지 않을 수 있습니다. 귀하의 위젯은 클릭 및 드래그의 좌표를 월드 공간으로 변환 한 다음 컨트롤러로 전달해야한다고 생각합니다.

왜 이렇게 좋습니까? 이는 뷰포트/위젯에 대한 특별한 지식이 필요없는 컨트롤러를 피하기 때문에 캡슐화를 유지합니다. 더 많은 뷰포트/위젯을 추가하거나 콘트롤러에 먹이를주고 자하는 콘솔이나 스크립트를 추가하면, 그들은 모두 "지시 사항"을 세계 공간에 전달할 수 있으며 컨트롤러는 매우 행복하게 작동합니다. 뷰포트가 이미 "세계 공간"및 "공간보기"를 인식하고 있거나 모델을 렌더링하지 못했습니다.

+0

감사합니다. 실제로 이것이 내가 끝내 준 것입니다. – everLearningStudent