两者的关系:
Item Views(Model-Based)类内的控件是Item Widgets(Item-Based)内对应控件的父类,
如QTreeWidget是从QTreeView派生的。
两者的区别:
Item Views(Model-Based)的对象进行数据操作相对比较复杂,但处理及展示大数据量时性能高;
Item Widgets的数据操作比较简单,但处理及展示大数据量时性能相对低。Item Widgets在开发中没有Item Views灵活,实际上Item Widgets就是在Item Views的基础上绑定了一个默认的存储并提供了相关方法。
详细介绍可看博客:
“QT学习2:Table/List/Tree的View,Widget,Model相关”
- List View :
- List Widgets :
QListView是基于Model,而QListWidget是基于Item。
QListWidget是继承QListView,QListView是基于model的,需要自己来建模(例如建立QStringListModel、QSqlTableModel等),保存数据,这样就大大降低了数据冗余,提高了程序的效率,但是需要我们对数据建模有一定了解,初学者就先不要考虑了,而QListWidget是一个升级版本的QListView,它已经自己为我们建立了一个数据存储模型(QListWidgetItem),操作方便,直接调用addItem即可添加项目(ICON,文字)
详细介绍可以看博客
“Qt入门-列表框QListWidget类”
“Qt5.9中控件listWidget用法(QListWidget基本用法)”
“QListWidget 和 QListView的区别”
- Tree view :视图类,需要手动给他指定模型类,才能够显示数据,QTreeView要灵活些。
- Tree Widgets :提供了一个默认模型的部件,比较方便。
详细介绍可以看博客
“实战PyQt5: 075-树状视图QTreeView”
“PyQt5高级界面控件之QTreeWidget(五)”
- Table View :
- Table Widgets :具有默认模型的基于项目的表视图
QTableWidget继承自QTableView。
QSqlTableModel能与QTableView绑定,但不能于QTableWidget绑定。
详细介绍可以看博客:
“QTableWidget与QTableView的区别”
“QTableWidget / QTableView的应用”
- Column View :以模型/视图数据为基础的,以列为单位的列表控件
代码语言:javascript复制详细介绍可以看博客:
“QT基础知识(九)列表控件QColumnView”
“Qt编写ColumnView入门示例”
#可以指定列表视图是否获取调整大小。默认情况下,可见性设置为true
bool resizeGripsVisible() const
void setResizeGripsVisible(bool visible)
- Undo View :是命令模式(Command pattern) 的实现,用于在应用程序中实现撤消/重做功能。
详细介绍可看博客:
“实战PyQt5: 078-撤销命令视图QUndoView”
“Qt如何实现QTableView的撤消与恢复功能”