Qt::ItemDataRole
模型中每一个item都有一组与之关联的数据元素,或者说每一个item都有一组与之关联的数据角色,这些角色用于指示每个item中应该显示哪些数据。因此data()和headerData()需要根据相应的角色交付相应的数据。一般说来,Qt::DisplayRole通常和Qt::EditRole交付的是相同的数据,因为显示的数据往往也是待编辑的数据。
视图初次显示数据时,模型会依次对于各个item使用itemData()取得所有数据,当双击某个item使其变为可编辑状态时,模型会使用Qt::EditRole通过data()函数来查询该item的可编辑角色数据。当item退出编辑状态进入显示状态时,setData()函数会使用编辑状态时item的最后一次编辑角色数据来更新该item的编辑角色数据,并且模型会使用Qt::DisplayRole通过data()函数来查询该item的可显示角色数据。
Qt::ItemFlag
Qt::ItemFlag用于描述一个item拥有哪些属性。例如Qt::ItemIsSelectable表示item是可以被选中的,Qt::ItemIsEditable表示item是可编辑的,Qt::ItemIsDragEnabled表示item是可拖拽的。