【发布时间】:2017-12-22 10:22:57
【问题描述】:
我想为QTableView 中的单元格着色。
所以我正在尝试更改关联QTableModel中相应项目的itemData。
为此,我使用QAbstractTableModel 类的setItemData 方法。
在文档中:
QAbstractItemModel::setItemData(const QModelIndex & index, const QMap < int, QVariant > & 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 方法的第二个参数中放入哪种类型的数据?
感谢提前
【问题讨论】:
-
setItemData 不接受颜色作为第二个索引
-
是的,我误解了文档。我认为一种颜色是预期的,但它是一个 Qmap。使用setData,问题就解决了。谢谢。
标签: python c++ qt qabstractitemmodel qvariant