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. なぜData.Time.ClockはDiffTimeとNominalDiffTimeを提供するのですか?
- 2. なぜResharperは「ネストされたクラスを作成する」などのコンテキストアクションを提供しないのですか?
- 3. UIViewControllerクラスをサブクラス化する
- 4. C++のアロケータがvoid型の特殊化を提供するのはなぜですか?
- 5. Java:サブクラスがベースクラスと異なるインタフェースを提供しないようにする
- 6. 私はデコレータを使用して、Pythonで複数のクラスにサブクラスを提供する必要があります
- 7. なぜ反応するネイティブはボタンコンポーネントを提供しないのですか?
- 8. サブクラスがそれ自身を提供しない場合、doxygenは基本クラスのドキュメントを使用しますか?
- 9. 空のオブジェクトを提供するPHPクラス
- 10. このウィンドウのコードのサブクラス化がクラッシュするのはなぜですか?
- 11. eaxに加えてorig_eaxが提供されるのはなぜですか?
- 12. アプリケーションサーバーは、提供できるSpringを提供しますか?
- 13. JPA CriteriaQueryが更新クエリを提供しないのはなぜですか?
- 14. Spring:Hibernate 4のSessionFactoryUtilsクラスがgetSessionメソッドを提供しないのはなぜですか?
- 15. クラスを動的にサブクラス化し、Objective Cでサブクラスをインスタンス化する方法は?
- 16. JavaScriptのgetElementsByClassNameが配列ではないオブジェクトを提供するのはなぜですか?
- 17. guice String idに応じて異なるサブクラスのインスタンスを提供する方法
- 18. matplotlibが私が提供する.ttfフォントを使用しないのはなぜですか?
- 19. なぜ2つのゲット関数を提供するのですか?
- 20. なぜ、シングルトンインスタンスがJavaのデフォルトで提供されていないのですか?
- 21. 部分表示のフルパスを提供する必要があるのはなぜですか?
- 22. なぜIDSはRSAMのCライブラリ関数を提供しないのですか?
- 23. wx.SingleChoiceDialogが正しくサブクラス化されないのはなぜですか?
- 24. サブクラス化されたUItableViewがスクロールしないのはなぜですか?
- 25. ウェブインターフェイスなしでフォームを提供する
- 26. サブクラス化するかサブクラス化しないか:that is ... ...?
- 27. Pythonでリストをサブクラス化する。スライスと空のリストが機能しないのはなぜですか?
- 28. FlexでTextAreaのサブクラスを作成すると 'textField'がインスタンス化されないのはなぜですか?
- 29. Django - なぜauth.Userをサブクラス化するのはお勧めできませんか?
- 30. なぜJComponentはContainerのサブクラスですか?
テーブルをモデル化するすべてのクラスがそのインターフェイスを遵守する必要があるのはなぜですか?そのインターフェイスに従うビューに使用されるものがありますか? – andreahmed
@andreahmedインターフェイスがないと、データを表示/変更するためのユニバーサルビューまたはプロキシを作成できないためです。 –