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 :
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
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
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
Partager