模型視圖設計模式的核心思想
- 使模型(數據)與視圖(顯示)相分離
- 模型只需要對外提供標准接口存取數據,無需數據如何顯示
- 視圖只需要自定義數據的顯示方式,無需數據如何組織存儲
- 當數據發生改變時,會通過信號通知視圖
- 當用戶與視圖進行交互時,會通過信號向模型發送交互信息
<span "="" src="https://images2018.cnblogs.com/blog/1182576/201806/1182576-20180610194732392-1669041420.png">
其中QStandardItemModel的常見子類有:

- QAbstractListModel:用來創建一維列表模型
- QStandardItemModel:用來存儲定制數據的通用模型
- QAbstractTableModel: 用來創建二維列表模型
<span "="" src="https://images2018.cnblogs.com/blog/1182576/201806/1182576-20180610194802946-939941251.png">
在Qt中,不管模型以什么結構組織數據,都必須為每個數據提供不同的索引值,使得視圖能通過索引值訪問模型中的具體數據
效果:

其中index()是個重載函數,用來獲取QModelIndex 索引值,完整的index()函數如下所示:
<span "="" src="https://images2018.cnblogs.com/blog/1182576/201806/1182576-20180610194826088-1683289830.png">
以QFileSystemModel為例:

也可以通過index索引值來查找數據,以QFileSystemModel模型為例, 與index相關的成員函數有:
其中data ()和setData() 函數的參數role 是模型數據角色
role 數據角色
當role值不同時,則顯示在視圖上的方式也會不同
對於role角色,常用的值有:
- Qt::DisplayRole 0 以文本方式顯示數據(QString)
- Qt::DecorationRole 1 將數據作為圖標來裝飾(QIcon,QPixmap)
- Qt::EditRole 2 可編輯的數據信息顯示(QString)
- Qt::ToolTipRole 3 作為工具提示顯示(QString)
- Qt::StatusTipRole 4 作為狀態欄中顯示的數據(QString)
- Qt::WhatsThisRole 5 作為幫助信息欄中顯示的數據(QString)
- Qt::FontRole 6 設置字體(QFont)
- Qt::TextAlignmentRole 7 設置模型數據的文本對齊(Qt::AlignmentFlag)
- Qt::BackgroundRole 8 設置模型數據的背景色(QBrush)
- Qt::ForegroundRole 9 設置模型數據的前景色,比如字體(QBrush)
以QTableView為例
效果:

接下來開始學習模型視圖中的委托
