我使用Qtableview显示文件和文件夹(仅显示图标,文件名,大小)。 我想为一些特定文件绘制文本颜色(行中的所有文本)。
例如:以'ABC'开头的文件为灰色; 'XYZ'是红色的......
答案 0 :(得分:0)
最佳做法是使用QIdentityProxyModel
并覆盖必要roles的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 );