QTableView詳細使用請參考:24.QTableView函數使用,右擊菜單實現


模型視圖設計模式的核心思想

  • 使模型(數據)與視圖(顯示)相分離
  • 模型只需要對外提供標准接口存取數據,無需數據如何顯示
  • 視圖只需要自定義數據的顯示方式,無需數據如何組織存儲
  • 當數據發生改變時,會通過信號通知視圖
  • 當用戶與視圖進行交互時,會通過信號向模型發送交互信息 

 

<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為例

效果:

 

 

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

 


文章來源:https://www.cnblogs.com/lifexy/p/9164175.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM