Model/View チュートリアル

すべてのUIディベロッパーはModel/Viewプログラミングについて理解していなければならない。そして、このチュートリアルのゴールはそれについての簡単で理解しやすいイントロを紹介することである。

テーブルやリスト、ツリーwidgetsはGUIの中で度々用いられる。それらのwidgetsにはデータへアクセスする方法が二つある。古いやり方ではwidgetsがその内部にデータを保持していた。この方法は直感的であるが、巨大なアプケーションでは、データの同期問題を引き起こす。そのような背景に基づき、提案されたのがModel/Viewプログラミングであり、この方法では、widgtesはデータを直接保持しない。そして、外部データへのアクセスは同期インターフェースを通して行われる。これによって、データの二重登録を避けることができる。最初は複雑に見えるかもしれないが、理解が深まってくると、簡単に理解することは出来ないことだけではなく、Model/Viewプログラミングの多くの利点が明確にわかるようになる。

Model/Viewプログラミングを学ぶ中で、Qtが実装しているいつかの基本的な技術を学ぶことになる。例えば

  • standard widgetsとmodel/view widgetsの違いについて
  • formsとmodelsの繋げ方
  • 簡単なmodel/view アプリケーションの開発
  • 定義されたmodels
  • 中間的なトピックとして
    • Tree views
    • Selection
    • Delegates
    • Debugging with model test

さらなるリファレンス。

1. イントロダクション

Model/Viewはviewとdataを切り離すために使われる。標準的なwidgetsはそのようにデザインされているわけでなはなく、Qt4ではそのため二つのwidgetsを用意している。その二つのwidgetsは一見似ているが、それらはデータへのアクセスする方法が異なる。

1.1 スタンダードなwidgets

例えばデータを内包するスタンダードなwidgetsを考える。データは2Dの配列だとする。データはwidgetsによって読み書きを提供されている。この方法は直感的だし多くのアプリケーションで有効でもある。しかし、この方法はときには問題となる。widgets内のデータを外部にコピーすると、開発者は内部と外部のデータを同期しなければならなくなる。それだけでなく、データと表示が密接に関係しているプログラムはユニットテストを書くのも一苦労となる。

1.2 Model/View アプローチ

Model/Viewは上記のような問題に対して様々な解決方法提示している。