Как изменить цвет элемента в QListView

У меня есть свой собственный подкласс QListView, и я хотел бы изменить цвет элемента с индексом mLastIndex . Я пробовал с

QModelIndex vIndex = model()->index(mLastIndex,0) ;
QMap<int,QVariant> vMap;
vMap.insert(Qt::ForegroundRole, QVariant(QBrush(Qt::red))) ;
model()->setItemData(vIndex, vMap) ;

Но это не изменило цвет, вместо этого, элемент больше не отображался. Есть идеи о том, что было не так?

1 ответ

Решение

Ваш код просто очищает все данные в модели и оставляет только значение для Qt::ForegroundRole так как ваша карта содержит только новое значение.

Сделайте так (это будет работать для большинства моделей данных, а не только для стандартных):

QModelIndex vIndex = model()->index(mLastIndex,0);
model->setData(vIndex, QBrush(Qt::red), Qt::ForegroundRole);

Или исправив свой код:

QModelIndex vIndex = model()->index(mLastIndex,0) ;
QMap<int,QVariant> vMap = model()->itemData(vIndex);
vMap.insert(Qt::ForegroundRole, QVariant(QBrush(Qt::red))) ;
model()->setItemData(vIndex, vMap) ;
Другие вопросы по тегам