Python 更改QTableModel中单元格的背景色

Python 更改QTableModel中单元格的背景色,python,c++,qt,qabstractitemmodel,qvariant,Python,C++,Qt,Qabstractitemmodel,Qvariant,我想给QTableView中的单元格着色 因此,我试图在关联的QTableModel中更改相应项的itemData 为此,我使用QAbstractTableModel类的setItemData方法 在文件中: qabstractemmodel::setItemData(常量QModelIndex&index,常量QMap&roles) 这是我的一段代码: color = QtGui.QColor(Qt.red) self.model.setItemData(self.model.index(3,

我想给
QTableView
中的单元格着色

因此,我试图在关联的
QTableModel
中更改相应项的
itemData

为此,我使用
QAbstractTableModel
类的
setItemData
方法

在文件中:

qabstractemmodel::setItemData(常量QModelIndex&index,常量QMap&roles)

这是我的一段代码:

color = QtGui.QColor(Qt.red)
self.model.setItemData(self.model.index(3,3),color,Qt.BackgroundRole)
我认为这会将模型的第三个单元格(水平和垂直)涂成红色

但应用程序回答:

TypeError: QAbstractItemModel.setItemData(QModelIndex, dict-of-int-QVariant): argument 2 has unexpected type 'QColor'
如果我尝试转换
Qcolor
Qvariant
中键入:

color = Qt.QVariant(QtGui.QColor(Qt.red))
self.model.setItemData(self.model.index(3,3),color,Qt.BackgroundRole)
答复:

TypeError: PyQt4.QtCore.QVariant represents a mapped type and cannot be instantiated
我真的不明白

所以我的问题是:我必须在
setItemData
方法的第二个参数中输入哪种类型的数据


感谢advance

您应该使用
qabstractemmodel::setData
在映射中设置单个值

如果要一次设置多个值,但必须构建一个
QMap
,其中每对由一个角色及其对应的值组成,则可以使用
qabstractemmodel::setItemData

 QMap<int, QVariant> map;
 map.insert(Qt::BackgroundRole, color);
 self.model.setItemData(self.model.index(3,3), map);
QMap;
map.insert(Qt::BackgroundRole,color);
self.model.setItemData(self.model.index(3,3),map);

setItemData不接受颜色作为第二个索引,我误解了文档。我以为会有颜色,但它是Qmap。有了setData,问题就解决了。谢谢,非常感谢,p-a-o-l-o!多亏了你,我终于了解了setItemData的工作原理。我使用了setData,错误信息消失了。(3,3)单元格没有改变颜色,但这是另一个问题!;-)这个问题已经解决了。
 QMap<int, QVariant> map;
 map.insert(Qt::BackgroundRole, color);
 self.model.setItemData(self.model.index(3,3), map);