Qt::ItemDataRole和Qt::ItemFlag

Qt::ItemDataRole

模型中每一个item并不仅仅只有一个用于显示的QString数据,表格为了正确显示某个item,它需要item提供用于显示用的QString,用于编辑状态时显示的QString,用于显示格子大小的QSize,用于显示这个格子背景色的QBrush等等。也就是说模型中每一个item都有一组与之关联的数据,用于指示每个item在表中如何显示。而这样一组数据在item的显示中扮演了不同角色。

item如何提供这样的一组数据呢?它提供一个QVariant data(int role)函数,让模型来根据不同的role查询不同的数据,例如data(Qt::DisplayRole)可以得到显示用的文本,data(Qt::ForegroundRole)可以得到该item以什么样的颜色显示等等。

一般我们设置一个item时,大多数时候只设置了其文本数据,其它的使用的默认值。实际上我们可以通过setData(brush, Qt::ForegroundRole)来控制文本颜色等。

 

 Qt::UserRole

一个item有多个预定义的角色数据,通常情况下够用。但是有时候我们需要item内部保存一个或多个我们自定义的数据。

例如保存我们自己定义的结构体指针,可以使用

setData(void* ptr ,Qt::UserRole)

如果我们还需要保存一个int,那么可以使用

setData(value ,Qt::UserRole+1)

 

相应的查询代码则是:

data(Qt::UserRole)和data(Qt::UserRole+1)

 

Qt::ItemFlag

Qt::ItemFlag用于描述一个item拥有哪些属性。例如Qt::ItemIsSelectable表示item是可以被选中的,Qt::ItemIsEditable表示item是可编辑的,Qt::ItemIsDragEnabled表示item是可拖拽的。

posted on 2014-07-05 23:22  lixtary  阅读(3291)  评论(0编辑  收藏  举报

导航