2016-04-14 11 views

答えて

4

これは、そのクラスがテーブルのモデリングに使用されないためです。テーブルをモデル化するすべてのクラスが遵守しなければならないインターフェイスです。 Qtには再利用できる具体的なモデルがいくつかありますが、QAbstractItemModelクラスのdocumentationの "継承者"リストを見てください。これらの派生クラスの中には、具体的には、名前がQAbstractで始まらないものがあります。

QStandardItemModelを使用できます。

C++のインターフェイスについては、読んでおく必要があります。抽象仮想メソッドを使用して実装されるインタフェースは、非常に一般的なイディオムです。例えば、 here。 C++ 11では、インタフェースはdon't use the virtual method idiomでも構いません。

「Qtがそのインタフェースを実装する汎用の具象クラスを提供しないのはなぜですか?」と答えたら、それは不可能な仕事だからです。みんなのデータソースは異なる実装の詳細を持っているので、Qtはみんなのアプローチを信じて普遍的な橋渡しをすることはできません。

QAbstractTableModelは、自分のデータモデルとQtのデータモデルの間にアダプタを作成するためのものです。

+0

テーブルをモデル化するすべてのクラスがそのインターフェイスを遵守する必要があるのはなぜですか?そのインターフェイスに従うビューに使用されるものがありますか? – andreahmed

+1

@andreahmedインターフェイスがないと、データを表示/変更するためのユニバーサルビューまたはプロキシを作成できないためです。 –

1

QStandardItemModelのような普遍的なモデルの実装があるので、必要に応じてこれをテーブル、ツリー、またはリストビューに使用できます。

関連する問題