如何在Qt中使用QFileSystemModel设置文本颜色QTableView?

时间:2018-05-21 10:54:12

标签: qt qtableview qfilesystemmodel qitemdelegate

我使用Qtableview显示文件和文件夹(仅显示图标,文件名,大小)。 我想为一些特定文件绘制文本颜色(行中的所有文本)。

例如:以'ABC'开头的文件为灰色; 'XYZ'是红色的......

1 个答案:

答案 0 :(得分:0)

最佳做法是使用QIdentityProxyModel并覆盖必要rolesdata方法。例如:

QVariant MyProxy::data(const QModelIndex &index, int role) const
{
  // Whatever you want in condition:
  if ( sourceModel()->data(index, Qt::TextRole).toString() == "SomeFile.txt" )
    switch( role )
    {
    case Qt::ForegroundRole: return Qt::Red;
    case Qt::BackgroundRole: return Qt::Blue; // or any brush, etc
    default:
      break;
    }

  return sourceModel()->data(role);
}

//...
MyProxy proxy = new MyProxy{};
proxy->setSourceModel( yourModel );
view->setModel( proxy );