Qt中ItemDataRole内部角色说明
ItemDataRole
ItemDataRole是通过其内部的各个Role对每一项都作出相应的Role操作从而更完美地将想要的数据以更完美的形式呈现出来。model中的角色role有多个,但是常用的就几个。
ItemDataRole包含的Role:
DisplayRole :主要用于以文本的形式显示数据,文本数据
EditRole:可用于文本数据的编辑。
DecorationRole:可以将数据通过图标的方式呈现出来。
ToolTipRole :实现当鼠标处于选中的数据时,显示出数据的相关提示。
StatusTipRole :在状态栏显示提示的数据
WhatsThisRole:可以通过选中数据摁下快捷键shift+F1来显示提示。
FontRole :可以改变数据的字体,字体数据。
TextAlignmentRole :可以将文本的位置进行居中、居左居右调整。
BackgroundColorRole :可以改变背景色。
TextColorRole:设置文字颜色
ForegroundRole:可以改变前景色
CheckStateRole:在某列中设置了CheckStateRole角色后,设置的列则可以显示出一个CheckBox。
AccessibleTextRole:用于辅助功能和插件扩展的文本(如屏幕阅读器)
AccessibleDescriptionRole:用于无障碍项目的描述
SizeHintRole:可以提示相应大小
InitialSortOrderRole:标题视图初始排序顺序
UserRole:用于应用程序的特定目的(自己定义用途).用户自己决定使用什么数据,如何处理数据。
QVariant CMyTableModel::data(const QModelIndex &index, int role) const { if(!index.isValid()) return QStandardItemModel::data(index,role); if(role==Qt::DisplayRole)//显示文本数据 { int row = index.row(); int col = index.column(); if(m_dataVector.size()>row) { QVector<CTableValueElement> vector = m_dataVector.at(row); if(vector.size()>col) { CTableValueElement element = vector.at(col); return element.m_value; } } } else if(role==Qt::BackgroundColorRole && index.column()==0)//第一列背景色 { QColor c(255,0,0);//红色 return c; } else if(role==Qt::ToolTipRole&&index.column()==0)//第一列提示 { QString str = "test"; return str; } else if(role==Qt::TextAlignmentRole&&index.column()==0)/ { return Qt::AlignCenter;//将第一列数据居中 } else if(role==Qt::TextColorRole&&index.column()==1)//第二行字体为红色 { QColor c(255,0,0); return c; } return QStandardItemModel::data(index,role); }
————————————————
版权声明:本文为CSDN博主「LMS_CL」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38516302/article/details/107243292