2011-01-12 23 views
1

這是關於MVC實現的設計問題。我正在使用QT和OpenGL創建2D圖形應用程序,但我不認爲這項技術很重要。MVC中的視圖設計問題中的鼠標事件

所以我的觀點是一個OpenGL窗口小部件,無論是要繪製存儲n中的模型和控制器應修改模型,並有OpenGL的小部件重新繪製場景。

該視圖應捕獲以下鼠標事件,MouseRelease,MouseDown和MouseMove,然後將它們傳送給控制器,以便在用戶單擊或拖動鼠標時做出正確的決定。

我2種方法之間的辯論,incapsulate鼠標的OpenGL控件內部處理,只是報告單擊並拖動回控制器? 或者將鼠標事件按原樣傳遞給控制器​​,並讓它處理所有邏輯以確定點擊和拖動。

任何建議是非常apreciated。 謝謝

回答

0

我認爲這個小部件會在視口/「視圖空間」座標系中獲得鼠標座標,這對控制器來說可能沒有多大意義。我認爲你的小部件應該將任何點擊和拖拽的座標轉換爲世界空間,然後將它們傳遞給控制器​​。

這是爲什麼這麼好?因爲它避免了你的控制器需要任何有關視口/小部件的特殊知識,因此保留了封裝。如果添加更多的視口/小部件,或者甚至可能需要控制檯或控制檯的腳本,他們都可以在世界空間中傳遞他們的「指令」,並且控制器的運行非常愉快。您的視口已經「知道」「世界空間」和「視圖空間」,或者它不能渲染你的模型。

+0

謝謝你,這實際上是我最終做的。 – everLearningStudent 2011-03-07 16:02:39