2010-01-26 15 views
1

En QT4.5,fente QT se Signaled deux fois

-je utiliser un QTableWidget, et je l'ai connecté le signal QTableWidget :: itemClicked() à un emplacement personnalisé comme celui-ci:

connect(_table, SIGNAL(itemClicked(QTableWidgetItem*)), item, SLOT(sloItemClicked(QTableWidgetItem*))); 

Je crée une telle connexion pour chaque ligne que j'ajoute à la table.

Le problème est que le SloItemClicked slot est appelé plus d'une fois, il semble qu'il s'appelle X temps où X est le numéro de ligne dans ma table.

Mais il appelle toujours la même ligne. (QTableWidgetItem que je reçois est le même).

Ceci est un problème, car lorsque la ligne est cliquée, je l'efface. Donc, la prochaine fois qu'il est appelé, le QTableWidgetItem n'est plus valide et il plante.

Si j'ai qu'une seule ligne, tout fonctionne comme prévu ..

Toute idée?

Merci

Répondre

8

Vous ne devez créer la connexion une fois puisque le signal est un signal sur la table et non sur une QTableWidgetItem individuelle. Lorsqu'il est émis, il vous donnera le QTableWidgdetItem sur lequel vous avez cliqué en tant qu'argument.