在Qt中有一个类QAbstractTableModel
,它是一个抽象类。为什么Qt设计人员提供了一个抽象类,并没有提供可用于建模表的实际类。为什么设计师让我把班级分类来使用它?为什么Qt提供一个类来继承它?
-4
A
回答
4
这是因为该类不用于表建模,它是一个模型化表的所有类必须遵守的接口。 Qt有几个可重用的具体模型,只需查看基类QAbstractItemModel
的documentation中的“Inherited by”列表即可。其中一些派生类是具体的,即那些名称不以0123'开头的:) :)
如果你想要一个通用模型,你可以使用一个QStandardItemModel
。
您需要阅读C++中的接口。使用抽象虚拟方法实现的接口是一个非常常见的习惯用法。见例如here。在C++ 11中,您可以使用接口don't use the virtual method idiom。
如果你问“为什么Qt不提供任何实现该接口的通用具体类”,答案是:因为这是不可能的工作。每个人的数据源都有不同的实现细节,Qt不可能预测每个人的方法并提供一个通用桥梁。
QAbstractTableModel
存在允许您在自己的数据模型和Qt的数据模型之间创建适配器。
1
有通用模型实现,例如QStandardItemModel,因此您可以根据需要将它用于表,树或列表视图。
相关问题
- 1. 我可以继承一个类来为泛型提供互操作吗?
- 2. 为什么基类继承两次,即使其中一个继承为虚拟?
- 3. 发现什么继承类它指向
- 4. 为什么我们使用另一个继承binder类的类来访问BoundServices?
- 5. Angular 2 - 从基类继承提供者
- 6. C#:继承一个子类,它从父
- 7. 为什么不能继承SqlDataReader类?
- 8. 为什么继承对象类型
- 9. 为什么嵌套类“继承”?
- 10. 为什么egit提供选项来承担责任?
- 11. UserControl继承另一个类来扩展它
- 12. 继承:为什么继承和提供的变量之间的行为有所不同?
- 13. 为什么箭头继承?
- 14. Qt XML继承
- 15. 我们应该为中间继承类提供默认实现:
- 16. 这个Kotlin对象为什么从它自身继承?
- 17. 如何确定哪个Python类在继承时提供属性
- 18. “继承”属性:它有什么作用?
- 19. 继承一个基类
- 20. 为什么它会为每个值提供相同的输出?
- 21. 为什么Android RemoteView类仅提供setOnClickPendingIntent
- 22. 为什么我的Objective-C子类没有继承它父类的属性?
- 23. java类继承和javabean继承之间有什么区别?
- 24. 从QGraphicsEllipseItem继承Qt
- 25. Qt pushButton和继承
- 26. LinkedList ...继承...什么?
- 27. 如何在AS3中为多个类提供没有继承的附加功能?
- 28. 一个类怎么能从一个基于它自己的模板继承?
- 29. 可以在基类分不清什么项目是继承它
- 30. Django模板继承不提供css?
为什么所有建模表的类都应该遵循该接口?有什么是用于坚持该界面的观点? – andreahmed
@andreahmed由于没有接口,不可能编写通用视图或代理来显示/修改数据。 –