Comportement bizarre de QItemSelectionModel
Bonjour a tous
Depuis 2 jours je coince sur ce probleme en apparence tout bete, mais la j'avoue que je cale...
J'ai une QTableView, associee a un QSqlTableModel.
Le modele est regle sur OnFieldChange, afin que mes modifications via la GUI soient propagees directement dans la base.
La consequence de ce choix, c'est qu'a chaque modification que j'effectue via setData, le modele est raffraichi et je perds ma selection courante.
J'ai donc essaye de sauver l'etat de selection avant l'ecriture, afin de le restaurer juste apres.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
def refreshRow(self, task_id, t, val):
record = self.model.record()
ii = record.indexOf("id") # on detecte la colonne "id"
ids = set() # on memorise les ids des taches selectionnees
for index in self.select.selectedRows():
ids.add(self.model.data(index))
# la modif du champ elle-meme
for i in xrange(self.model.rowCount()):
index = self.model.index(i, ii)
if self.model.data(index) == task_id:
j = record.indexOf(t)
index = self.model.index(i, j)
if t == "size":
val = int(val)
self.model.setData(index, val)
# pour chaque ligne, on verifie si la task_id est parmi celles memorisees, et si oui on selectionne
for i in xrange(self.model.rowCount()):
index = self.model.index(i, ii)
if self.model.data(index) in ids:
self.select.select(index, QtGui.QItemSelectionModel.SelectCurrent | QtGui.QItemSelectionModel.Rows) |
Si j'ai une seule ligne selectionnee lors de l'ecriture, elle est bien restauree.
Si j'en ai plusieurs, une seule uniquement reste selectionnee a la fin.
Mon probleme semble se situer au niveau de ma derniere ligne, mais j'ai beau lire la documentation, ca devrait marcher non ?