Как установить цвет текста QTableView с QFileSystemModel в Qt? - PullRequest
0 голосов
/ 21 мая 2018

Я использую Qtableview, чтобы показать файл и папку (только показать значок, имя файла, размер).Я хочу нарисовать цвет текста (весь текст в строке) для нескольких конкретных файлов.

Например: файл, начинающийся с 'ABC', серый;«XYZ» красный, ...

1 Ответ

0 голосов
/ 21 мая 2018

Рекомендуется использовать QIdentityProxyModel и переопределить метод data для необходимых ролей .Например:

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 );
...