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