2011-01-12 15 views
1

これはMVCの実装に関する設計上の質問です。私はQTとOpenGLを使って2Dグラフィックアプリを作成していますが、技術は重要ではないと思います。ビューデザインのMVCマウスイベントの設計質問

私のビューはOpenGLウィジェットです。描画されるものはモデルに格納され、コントローラはモデルを修正し、OpenGLウィジェットでシーンを再描画する必要があります。

次のマウスイベント、MouseRelease、MouseDown、およびMouseMoveをキャプチャしてから、コントローラに転送して、ユーザーがマウスをクリックまたはドラッグしたときの処理を適切に判断する必要があります。

私は2つのアプローチの間で議論しています。マウスの操作をOpenGLウィジェット内でカプセル化し、単にクリックしてコントローラに戻って報告するだけですか? マウスイベントをそのままコントローラに転送し、すべてのロジックを処理してクリックとドラッグを判断させます。

アドバイスは非常に安いです。 ありがとう

答えて

0

私は、ウィジェットがビューポート/「ビュースペース」座標系でマウス座標を取得しようとしていると考えていますが、これはコントローラにあまり意味がないかもしれません。あなたのウィジェットは、クリックとドラッグの座標をワールド空間に変換してからコントローラに渡すべきだと思います。

なぜこれが良いですか?これは、あなたのコントローラがビューポート/ウィジェットの特別な知識を必要とせず、カプセル化を維持するためです。より多くのビューポート/ウィジェットを追加したり、コントローラやコントローラにフィードしたいコンソールやスクリプトを追加したりすると、それらはすべてワールドスペースで "命令"を渡すことができ、コントローラは非常にうまく機能します。あなたのビューポートは、すでに "世界の空間"と "空間の表示"を認識しているか、モデルを描画できませんでした。

+0

ありがとう、これは実際に私がやったことです。 – everLearningStudent