Bonjour

Je vais essayer d'expliquer mon problème clairement parce que mon code est trop gros pour être affiché ici. De plus comme il fait partie d'un gros projet, il ne peut fonctionner que dans le projet et non individuellement.

J'ai une bdd avec des liaisons (1,n). Pour un père j'ai n fils et chaque fils n'a qu'un père. Or, je cherche à afficher, pour chaque père, l'ensemble de ses fils. J'ai donc créé un QTableWidget pour afficher les fils.
Dans ce QTableWidget, je crée une nouvelle ligne pour chaque fils. Ce fils ayant plusieurs éléments individuels, je crée un QTableWidgetItem pour chaque élément que j'affiche sur la ligne. Jusque là tout va bien.

J'ai voulu ensuite pouvoir offrir la modification d'un élément. J'associe donc à cet élément un QItemDelegate qui va s'occuper de créer l'éditeur spécifique à l'élément à modifier. Si c'est un nombre il créera alors un QSpinBox, si c'est un champ texte il créera un QLineEdit et etc.
Et ensuite, je connecte le signal commitData(QWidget*) du QItemDelegate à un slot perso qui prendra en charge la modification.

Et c'est là le problème: le slot est bien appelé, il connait bien son sender() (le QItemDelegate), il reçoit bien la widget à l'origine de l'appel (par exemple le QSpinBox) mais je ne sais pas, moi, repérer parmis tous les QWidgetItem de mon tableau lequel est à l'origine de la modif. Pourtant il doit y avoir un moyen parce que le QItemDelegate, quand il appelle la méthode createEditor(), il reçoit en 4° paramètre un index contenant des infos sur sa position dans le QtableWidget.

Bon j'ai quand-même des solutions possibles. Je peux par exemple associer à mon QSpinBox un setData contenant des infos sur lui (comme sa position row/col) mais peut-être que l'info est déjà quelque part sauf que j'ai pas trop d'idée pour la trouver. Si quelqu'un peut m'aider...

Merci à tous