0. 前言
上一篇文章
梳理了
Model
相关类的UML图,介绍了
Model
类是如何通过
QModelIndex
类来索引数据的,以及
QModelIndex
拥有的强大表示能力,能够实现对
矩阵模型、树模型
的数据结构的表示。
我自己都有些按捺不住想要写
如何写自己的
Model
类
的内容了,但是
还差临门一脚
,需要再介绍一下今天的主人公:
ItemDataRole
。
它是Qt命名空间内的一个
枚举
类型,而且之前的教程中从未出现,但它又是
下手编码之前必须要掌握
的内容,本文来简单探究一下它~
系列文章回顾
:
Qt Model/View 学习(1) – 是什么和为什么?
Qt Model/View 学习(2) – QModelIndex索引模型数据
1. 为什么需要Role
Qt::ItemDataRole
的出现稍显突然。但它作为一个枚举类型,理解起来是十分简单的。
上一篇文章中我们讲到可以通过
QModelIndex
来索引
Model
中的数据,这里的数据可以是很散漫、毫无结构的。不过这是对于
Model
与
Data
打交道的场合。
当
Model
与
View
打交道时,
数据
的概念就不仅仅是
Data
中的内容了。就像
Excel
表格中,每个单元格填入的
文字内容
是
Data
,但每个单元格还有其它属性,比如:
加粗
、
斜体
、颜色……
在
Model
中提供了索引
QModelIndex
之后,结果将指向一个
数据群
,该数据群包含了
数据本身、字体、颜色、背景色
等等,这些都是
View
在显示时所需要的,所以需要
Qt::ItemDataRole
与
QModelIndex
配合确定所需要的的数据。
当然似乎也可以采用各种接口来获取各种数据,但这并不是贯彻
面向对象
思想的Qt所采用的方式。
2. 有哪些Role
用得最多的莫过于
Qt::DisplayRole
和
Qt::EditRole
了,前者用于读取数据,后者编辑数据。激进一点的话,看到这里就已经可以去
实现自己的
Model
类了。
常用一些的
Role
见下表:
enum | 值 | 描述 | 数据类型 |
---|---|---|---|
|
0 | 显示数据 |
|
|
2 | 编辑数据 |
|
|
6 | 显示数据时的字体 |
|
|
7 | 对齐方式 |
|
|
8 | 显示背景色 |
|
|
9 | 显示前景色,如字体颜色 |
|
完整列表请参考官方文档,可在
Assistant
中搜索
Qt::ItemDataRole
,此处给出枚举值贴图。
3. 小结
-
QModelIndex
能够索引数据,但是对于
View
而言,
数据的种类更多
,所以需要枚举类型
Qt::ItemDataRole
进行区分; -
Qt::DisplayRole
用于显示数据,
Qt::EditRole
用于编辑数据;
如有错误欢迎指正,共同进步~
今天你学废了吗?