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();
}


  

  

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

maonianlove

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值