QTableView设置特定行的颜色

时间:2016-11-09 14:11:47

标签: c++ qt

我知道论坛上有很多关于这个主题的讨论,但我找不到解决这个问题的方法。

我有一个使用模型的QTableView。我需要能够通过模型更改某些特定行的背景颜色,更准确地说是来自data函数。

QVariant CCustomModel::data(const QModelIndex &index, int role) const
{
  if (role == Qt::DisplayRole)
  {

    switch (index.column())
    {
      case colName:         return QVariant(QString::number(1));
      case colAdress:       return QVariant(QString::number(2));
      case colGender:       return QVariant(QString::number(3));
      case colTelephone:    return QVariant(QString::number(4));
      default:
        return QVariant();
    }
  }

  if(role == Qt::BackgroundColorRole)  //also tried Qt::BackgroundRole and Qt::ForegroundRole
  {
    return QVariant(QColor(Qt::red));
  }
  return QVariant();
}

这很简单,不起作用。显示数字但背景颜色仍然是基本颜色。这里有什么可能的解决方案吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

  if(role == Qt::BackgroundRole) 
  {
      return QBrush(QColor(Qt::red));
  }