You may not have to use a custom delegate. If you look at the documentation for the Qt::ItemDataRole, you'll notice that there is a Qt::ForegroundRole which you can specify in your model's data method to return whatever decoration you want. Since your model should know which fields are editable, then you can use this logic to return data in different QBrush values.