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

原文地址:http://www.cnblogs.com/david-china/p/16854630.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性