Ich möchte eine Zelle in einem QTableView
färben.Hintergrundfarbe für eine Zelle in einem QTableModel ändern
Also ich versuche, die itemData
des entsprechenden Artikels in der zugehörigen QTableModel
zu ändern.
Um dies zu tun, verwende ich die setItemData
Methode der QAbstractTableModel
Klasse.
In der Dokumentation:
QAbstractItemModel::setItemData(const QModelIndex & index, const QMap < int, QVariant > & roles)
Das ist mein Stück Code:
color = QtGui.QColor(Qt.red)
self.model.setItemData(self.model.index(3,3),color,Qt.BackgroundRole)
Ich dachte, das die dritte Zelle des Modells Farbe würde (horizontal und vertikal) in rot.
Aber die Anwendung Antworten:
TypeError: QAbstractItemModel.setItemData(QModelIndex, dict-of-int-QVariant): argument 2 has unexpected type 'QColor'
Wenn ich versuche, den Qcolor
Typen in einer Qvariant
zu verwandeln:
color = Qt.QVariant(QtGui.QColor(Qt.red))
self.model.setItemData(self.model.index(3,3),color,Qt.BackgroundRole)
Antwort:
TypeError: PyQt4.QtCore.QVariant represents a mapped type and cannot be instantiated
was ich wirklich kann nicht verstehen.
Also gibt es meine Frage: Welche Art von Daten muss ich in den zweiten Parameter einer setItemData
Methode eingeben?
Dank für das Voraus
SetItemData nicht akzeptiere Farbe als zweiten Index – user1767754
Ja, ich hatte die Dokumentation falsch verstanden. Ich dachte, eine Farbe würde erwartet, aber es war eine Qmap. Mit setData ist das Problem gelöst. Vielen Dank. –