QT学习:模型/视图基本概念
Qt的模型/視圖結構分為三部分:模型(Model)、視圖(View)和代理(Delegate)。其中,模型與數據源通信,并為其他部件提供接口;而視圖從模型中獲得用來引用數據條目的模型索引(Model Index)。在視圖中,代理負責繪制數據條目,當編輯條目時,代理和模型直接進行通信。模型/視圖/代理之間通過信號和槽進行通信,如圖所示:
(1)數據發生改變時,模型發出信號通知視圖。
(2)用戶對界面進行操作,視圖發出信號。
(3)代理發出信號告知模型和視圖編輯器目前的狀態。
一、模型
InterView框架中的所有模型都基于抽象基類QAbstractItemModel,此類由QProxyModel、QAbstractListModel、QAbstractTableModel、QAbstractProxyModel、QDirModel、QFileSystemModel、QHelpContentModel和QStandardItemModel類繼承。其中,QAbstractListModel類和QAbstract TableModel類是列表和表格模型的抽象基類,如果需要實現列表或表格模型,則應從這兩個類繼承。完成QStringList存儲的QStringListModel類繼承自QAbstractListModel類,而與數據庫有關的QSqlQueryModel類繼承自QAbstractTableModel類;QAbstractProxyModel類是代理模型的抽象類;QDirModel類是文件和目錄的存儲模型。
二、視圖(View)
InterView框架中的所有視圖都基于抽象基類QAbstractItemView,此類由QColumnView、QHeaderView、QListView、QTableView和QTreeView類繼承。其中,QListView類由QUndoView類和QListWidget類繼承;QTableView類由QTableWidget類繼承;QTreeView類由QTreeWidget類繼承。而QListWidget類、QTableWidget類和QTreeWidget類實際上已經包含了數據,是模型/視圖集成在一起的類。
三、代理(Delegate)
InterView框架中的所有代理都基于抽象基類QAbstractItemDelegate,此類由QItemDelegate和 QStyledItemDelegate類繼承。其中,QItemDelegate類由表示數據庫中關系代理的QSqlRelationalDelegate類繼承。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的QT学习:模型/视图基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT学习:图形视图Graphics Vi
- 下一篇: QT学习:模型练习