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

posted on 2022-11-03 15:32  斗战胜佛美猴王  阅读(724)  评论(0编辑  收藏  举报