QTableView中修改某个单元格或者行或者列内容颜色

前几天遇到这个方面的问题,在网上搜索了下,并没有找到很好的解答方法。后来做出来了,分享给大家。


QTableView的单元格内容实现还是继承了 TableViewModel类的 data( const QModelIndex &index, int role) const函数,那个设置颜色的问题也就在这个里面实现了。

1、设置某个单元格颜色

QVariant TableViewModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();

    if (index.row() >= fEntries.size() || index.row() < 0)
        return QVariant();

    if(role == Qt::DisplayRole) {
        const Entry& entry = fEntries.at(index.row());
        const QString& key = getColumnId(index.column());
        return entry.value(key);
    }
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
 
  
    return QVariant();
}

我这个上面其实是有两种状态,根据里面的内容来显示颜色的变化,单元格的锁定时(index.column()和index.row()).
既然能锁定某个单个元格,那个锁定某一行或者一列也很简单。


 
  
 
  
2、设置某行颜色

QVariant TableViewModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();

    if (index.row() >= fEntries.size() || index.row() < 0)
        return QVariant();

    if(role == Qt::DisplayRole) {
        const Entry& entry = fEntries.at(index.row());
        const QString& key = getColumnId(index.column());
        return entry.value(key);
    }
  
 
   
 
   
 
   
 
   
 
   
 
   
    return QVariant();
}

 
  
3、设置某列颜色

QVariant TableViewModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();

    if (index.row() >= fEntries.size() || index.row() < 0)
        return QVariant();

    if(role == Qt::DisplayRole) {
        const Entry& entry = fEntries.at(index.row());
        const QString& key = getColumnId(index.column());
        return entry.value(key);
    }
  
 
   
column
 
   
 
   
 
   
 
   
    return QVariant();
}

 
  
 
  

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值