如何在QListView中更改项目的颜色

时间:2014-07-29 11:20:41

标签: qt 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 个答案:

答案 0 :(得分:2)

您的代码只是清除模型中的所有数据,只留下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) ;