Wie ändere ich die Hintergrundfarbe nach der Bearbeitung der QTableView-Zelle?
Ich habe dieses QTableView mit benutzerdefiniertem Modell und Delegat. Wie ändere ich die Hintergrundfarbe der Zelle, nachdem ich sie bearbeitet habe?
soll ich das im delegierten tun?setModelData()
?
index.model.setData(index, QVariant(True),Qt.UserRole)
und später in den Modellendata()
# nennt es sich selbst?
if role == Qt.BackgroundColorRole:
if index.model().data(index,Qt.UserRole).toBool():
return QVariant(QColor(Qt.darkBlue))
und in ModellensetData()
Ich habe keinen Code wie:
if role==Qt.UserRole:
....
Wie geht das richtig?
edit: Hier ist mein ganzessetData()
Methode im benutzerdefinierten Modell
def setData(self, index, value, role=Qt.EditRole):
if index.isValid() and 0 <= index.row() < len(self.particles):
particle = self.particles[index.row()]
column = index.column()
if column == ID:
value,ok= value.toInt()
if ok:
particle.id =value
elif column == CYCLEIDANDNAME:
cycleId,cycleName= value.toString().split(' ')
particle.cycleId =cycleId
# also need to set cycleName
for name in self.cycleNames:
if name.endsWith(cycleName):
particle.cycleFrameNormalized=particle.cycleName = name
break
elif column == CYCLEFRAME:
value,ok= value.toInt()
if ok:
print 'set new val to :',value
particle.cycleFrame =value
# self.setData(index,QVariant(QColor(Qt.red)),Qt.BackgroundRole)
elif column == CLASSID:
value,ok= value.toInt()
if ok:
particle.classId =value
elif column == VARIATIONID:
value,ok= value.toInt()
if ok:
particle.variationId =value
self.emit(SIGNAL("dataChanged(QModelIndex,QModelIndex)"),
index, index)
return True
return False
Es tut mir leid, aber ich habe noch keine Ahnung, ich werde den vollständigen Code aus dem Rapid Gui Development Book einfügen. Beispiel: Ich habe meinen Code hier gepostethttp://pastebin.com/ShgRRMcY
Wie ändere ich den Code, um die Hintergrundfarbe der Zelle nach dem Bearbeiten der Zelle zu ändern?