Mise à jour d'un item de QTableWidget
Bonjour
Voila mon problème, j'ai un QTableWidget avec 2 colonnes. Je souhaite que lorsque l'on modifie une cellule de la colonne 0, cela modifie la cellule de la ligne au dessus dans la colonne 1 et inversement, lorsque je modifie une cellule de la colonne 1 cela modifie la cellule de la ligne en dessous dans la colonne 0.
Pour cela j'ai utilisé un slot de type :
Code:
QObject.connect(self.ui.tb_bornes_CC, SIGNAL('itemChanged(QTableWidgetItem *)'), self._itemChanged)
et la fonction _itemChanged
Code:
1 2 3 4 5 6 7 8 9 10
| def _itemChanged(self, item):
#QMessageBox.warning(self,"Warning",'Bonjour')
if item.column() == 0:
self.ui.tb_bornes_CC.setItem(item.row()-1,1,QTableWidgetItem(item.text(),0))
if item.column() == 1:
if item.row() == self.ui.tb_bornes_CC.rowCount()-1:
QMessageBox.warning(self,"Warning",'Cette cellule n\'est pas modifiable')
item.setText('-')
else:
self.ui.tb_bornes_CC.setItem(item.row()+1,0,QTableWidgetItem(item.text(),0)) |
J'obtiens une erreur de type
Citation:
Traceback (most recent call last):
File "boa_main_ajoutCC_20130221.py", line 140, in _itemChanged
if item.column() == 1:
RuntimeError: underlying C/C++ object has been deleted
Qui j'imagine provient du fait que lorsque je modifie un item, il change celui que je veux au premier coup mais que comme ce dernier est modifié il relance le slot.
Je ne vois pas comment résoudre cela, auriez vous une idée ?
Merci à tous
PS : tb_bornes_CC est ma QTableWidget