Qtには、抽象クラスであるQAbstractTableModel
があります。 Qtデザイナーが抽象クラスを提供する理由と、テーブルのモデリングに使用できる実際のクラスを提供しない理由。なぜデザイナーはクラスをサブクラス化して使用したのですか?Qtがサブクラス化するクラスを提供するのはなぜですか?
-4
A
答えて
4
これは、そのクラスがテーブルのモデリングに使用されないためです。テーブルをモデル化するすべてのクラスが遵守しなければならないインターフェイスです。 Qtには再利用できる具体的なモデルがいくつかありますが、QAbstractItemModel
クラスのdocumentationの "継承者"リストを見てください。これらの派生クラスの中には、具体的には、名前がQAbstract
で始まらないものがあります。
QStandardItemModel
を使用できます。
C++のインターフェイスについては、読んでおく必要があります。抽象仮想メソッドを使用して実装されるインタフェースは、非常に一般的なイディオムです。例えば、 here。 C++ 11では、インタフェースはdon't use the virtual method idiomでも構いません。
「Qtがそのインタフェースを実装する汎用の具象クラスを提供しないのはなぜですか?」と答えたら、それは不可能な仕事だからです。みんなのデータソースは異なる実装の詳細を持っているので、Qtはみんなのアプローチを信じて普遍的な橋渡しをすることはできません。
QAbstractTableModel
は、自分のデータモデルとQtのデータモデルの間にアダプタを作成するためのものです。
1
QStandardItemModelのような普遍的なモデルの実装があるので、必要に応じてこれをテーブル、ツリー、またはリストビューに使用できます。
関連する問題
- 1. ArrayBuilderの基本クラスがメソッドインタフェースを提供しないのはなぜですか?
- 2. なぜData.Time.ClockはDiffTimeとNominalDiffTimeを提供するのですか?
- 3. QTデザイナでウィジェットをサブクラス化する
- 4. HadoopのMapperとReducerでサブクラスを提供する方法は?
- 5. 2つのクラスが互いにサブクラス化すると、intelliJがフリーズするのはなぜですか?
- 6. Rなぜn_distinctが異なる結果を提供するのですか?
- 7. UIViewControllerクラスをサブクラス化する
- 8. Cは型定義を提供するのがなぜ迷惑ですか?
- 9. なぜ "Request ::"(Request Staticクラス)はLaravel 5.4の$ resquest->(Requestオブジェクト)と異なるメソッドを提供するのですか?
- 10. なぜResharperは「ネストされたクラスを作成する」などのコンテキストアクションを提供しないのですか?
- 11. C++のアロケータがvoid型の特殊化を提供するのはなぜですか?
- 12. 私はデコレータを使用して、Pythonで複数のクラスにサブクラスを提供する必要があります
- 13. Java:サブクラスがベースクラスと異なるインタフェースを提供しないようにする
- 14. SQLiteOpenHelperクラスのコンテキストとは何ですか?異なるクラスから異なるコンテキストを提供する場合は、
- 15. PlayはOAuth 1.0のサポートのみを提供するのはなぜですか?
- 16. このウィンドウのコードのサブクラス化がクラッシュするのはなぜですか?
- 17. 単純なユースケースでマルチプロセッシングのBaseManagerをサブクラス化するのはなぜですか?
- 18. サブクラスがそれ自身を提供しない場合、doxygenは基本クラスのドキュメントを使用しますか?
- 19. なぜ反応するネイティブはボタンコンポーネントを提供しないのですか?
- 20. Web経由でQt Guiを提供する方法は?
- 21. 空のオブジェクトを提供するPHPクラス
- 22. なぜこのコードがstd :: hashテンプレートの** ALL ** enumsのための専門化を提供するのですか?
- 23. 静的なプロパティのみを提供するクラスの名前は何ですか?
- 24. アプリケーションサーバーは、提供できるSpringを提供しますか?
- 25. eaxに加えてorig_eaxが提供されるのはなぜですか?
- 26. カスタムコアデータを作成するMKAnnotationをサブクラス化するクラスですか?
- 27. デフォルトのデフォルトのコンストラクタですが、なぜユーザが提供するデフォルトのコンストラクタではないのですか?
- 28. クラスを動的にサブクラス化し、Objective Cでサブクラスをインスタンス化する方法は?
- 29. JPA CriteriaQueryが更新クエリを提供しないのはなぜですか?
- 30. java.time.LocalDateTimeがtoDate()メソッドを提供していないのはなぜですか?
テーブルをモデル化するすべてのクラスがそのインターフェイスを遵守する必要があるのはなぜですか?そのインターフェイスに従うビューに使用されるものがありますか? – andreahmed
@andreahmedインターフェイスがないと、データを表示/変更するためのユニバーサルビューまたはプロキシを作成できないためです。 –