Bonjour,
apres plein de probleme sur un autre topic, j'en arrive enfin a remplir mon tableau !
Je fais ça :
Ce code me produit une segmentation fault, maus uniquement a la fermeture du programme, donc c'est pas ça qui me pose (encore) probleme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 item = new QTableWidgetItem; for (m = 0 ; m < m_nbcheval ; m++) { for (i = 0 ; i < 7 ; i++) { item->setText(colonne[m][i]); tableau->setItem(m, i, item); fprintf(stderr, "texte : %s\n", colonne[m][i].toStdString().c_str()); } }
colonne[][] est un tableau de char a deux dimension, la premiere fait un nombre indeterminer, la deuxieme fait 7 (0 compris). Dedans, j'y ai stoquer ce que je veux afficher dans mon tableau, ligne par ligne et ensuite colonne par colonne (nombre de ligne inderterminé a la compilation, et 7 colonne).
fprintf ma bien confirmer que colonne contenait ce que je voulais.
Je sais que la derniere valeur que contient colonne[m][7] (peut importe m, c'est la meme chose dans tous les cas pour l'instant), ça vaut colonne 7 (j'ai fait simple pour le test ).
Mon tableau se retrouve remplie de colonne 7.
Et je comprend pas pourquoi.
En simple, mon probleme, c'est qu'avec ce code mon tableau est remplie de la meme valeur, la toute derniere que la boucle lis.
EDIT : bon, je sais que le probleme vien de setItem. J'ai verifié les valeur de item apres le setText et elles sont bonnes.
Quand je fais un setItem avec des coordonnées definie (par exemple je dis setItem(0,0,item) , ça marche parfaitement, mais des que je remplace l'une des valeur par une variable, il me remplie la ligne ou la colonne de "Colonne 7". Et apres me produit un segmentation fault a la fermeture du programme.
EDIT 2 : bon, je comprend pas ...
j'ai fait
Pour voir, et ça revoie les valeurs que le tableau devrait contenir ... alors pourquoi est-ce qu'il contient que des "colonne 7" ? c'est incroyable ça !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 fprintf(stderr, "texte : %s\n", tableau->itemAt(m,i)->text().toStdString().c_str());
EDIT : bon, j'ai toujours pas trouver mais voila les nouvelles :
J'ai mis un fprintf apres la boucle pour voir ce que contenait une celulle au hasard, et elle contient colonne 7. Donc a la fin de la boucle, toute les cellules sont mis a la meme valeur. Je comprend pas pourquoi ...
Dans la doc ils disent que si on veut utiliser setItem dans une boucle, il faut desactiver setSortingEnabled. Je l'ai fait mais ça change rien, il est deja a false par defaut
EDIT : je vien de decouvrir un truc ! Si je change le contenu d'une cellule, toute les autres changent aussi !
Doit y avoir un truc d'activer qui devrait pas l'etre !
EDIT : bon, on m'a repondu sur un autre forum, il suffisait de rajouter un new dans la boucle =) .
Donc probleme resolu, merci quand meme ^^
Partager