Bonjour,

J'ai une qtablewidget dans lequel on ne peut mettre que des entiers, j'utilise le signal itemChanged() pour que l'utilisateur modifie la valeur en double cliquant sur la case et en entrant la valeur.

Je verifie si ce qu'il a entré est bien un entier :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
int chiffre = item->text().toInt(&ok);
if(!ok) throw 	QMessageBox::warning(this, "Attention","erreur" );
J'ai 2 type d'affichage pour le tableau, la premiere est un bete affichage console ou je peux aussi interagir sans l'intergace graphique en mettant des valeur en indiquant la ligne, la colonne et la valeur. Et la deuxieme c'est mon Qtablewidget.
Lorsque j'insere une valeur ac l'interaction console, le tableau a aussi changé, logique. Le probleme est que je recois plusieurs fois le meme message disant que le numéro placé est deja inscrit, comme s'il faisait appel plusieurs fois a la methode. Je connecte le signal et le slot seulement lors de la creation de la tablewidget

Code : Sélectionner tout - Visualiser dans une fenêtre à part
connect(ui.graphiqueSudoku,SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(modifierCase(QTableWidgetItem *)));
Je précice que j'ai 2 methode distinctes pour l'insertion de valeur, une pour la console l'autre pour la tablewidget

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
void jeuSudoku::modifierCase(QTableWidgetItem * item){
	bool ok;
	int chiffre = item->text().toInt(&ok);
	if(!ok) throw 	QMessageBox::warning(this, "Attention",item->text() );
	try {
		sudoku->placerChiffre(item->row(),item->column(), chiffre );
	} catch (SudokuException &sudoExc) {
		QMessageBox::warning(this, "Attention", sudoExc.what());
	}
}

Merci d'avance pour l'aide