Erreur : Segmentation fault: 11 a cause d'un delegate
Bonjour,
j'ai un delegate qui me permet d'afficher une liste déroulante dans un tableau :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| class AssignmentDelegate(QtGui.QItemDelegate):
def __init__(self, owner):
QtGui.QItemDelegate.__init__(self, owner)
#On charge TOUTES la table "Categories" dans le model
self.modelAssignment = QSqlTableModel(self)
self.modelAssignment.setTable("Assignments")
self.modelAssignment.select()
def createEditor(self, parent, option, index):
text = index.data(QtCore.Qt.DisplayRole).toString()
editor = QtGui.QComboBox(parent)
editor.setModel(self.modelAssignment);
editor.setModelColumn(self.modelAssignment.fieldIndex("name"))
indexCat = editor.findText(unicode(text))
editor.setCurrentIndex(indexCat)
editor.installEventFilter(self)
return editor
def setEditorData(self, editor, index):
value = index.data(QtCore.Qt.DisplayRole).toString()
indexAss = editor.findText(unicode(value))
editor.setCurrentIndex(indexAss)
def setModelData(self,editor,model,index):
value = editor.currentIndex()
myIndex = self.modelAssignment.index(value, 0)
assignmentId = self.modelAssignment.data(myIndex, 0).toInt()[0]
#Enregistrement
model.setData(index, QtCore.QVariant(assignmentId))
#En cas de virement, on doit mettre à jour les deux enregistrements.
row = index.row()
if model.index(row, 14).data().toInt()[1] == True:
idVirement = model.index(row, 14).data().toInt()[0]
query = QSqlQuery()
query.exec_('UPDATE Operations\
SET assignment_id = \"'+str(assignmentId)+'\"\
WHERE (virement_id = '+str(idVirement)+')')
#print query.lastError().text()
#################################################################### |
Et j'ai une méthode pour supprimer (dans un autre widget) des item de la liste déroulante.
Une fois supprimé, je recharge le delegate du tableau pour qu'il actualise les liste et que l'item supprimé n'apparaisse plus.
Le truc c'est que si j'actualise le delegate
Code:
self.parent.tableView.setItemDelegateForColumn(6,PlacementDelegate(self))
apres j'ai une erreur Segmentation fault: 11 des que j'affiche le fameux tableau.
Quelqu'un peut-il m'expliquer comment faire différemment? je ne comprend pas bien l'erreur… Ou bien comment éviter cette erreur?
Merci d'avance