Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Concours > Le Sudoku : des nombres en folie ! > Gerer les événements sur les tableaux d'objets > Lecture du sujet

Gerer les événements sur les tableaux d'objets

Je n'arrive pas à obtenir

Vous devez être inscrit pour pouvoir poster des messages

RésoluLe problème de ce sujet a été résolu

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne Le_bredin # Posté le 29/07/2008 à 13:09:21
Volem rien foutre al païs !
Avatar
Groupe : Membres
Bonjour aux zéros qui, comme moi, galèrent sur Qt depuis qu'un certain concours a été lancé.


Case hérite de QSpinBox, et est dotée d'un attribut int m_index, qui contient une valeur différente pour chaque case. En effet, dans le constructeur de case, je demande un int, et je construis mon tableau de cases de la façon suivante :

Code : C++
1
2
3
4
5
6
Case** m_cases = new Case*[nombreCases];
		
for (int i=0 ; i< nombreCases ; i++) 
{
	m_cases[i] = new Case(i);
}


Mais j'ai un problème très ennuyeux avec mes événements et mon tableau de Case. J'émets un signal quand la case à le focus, avec l'index comme argument :

Code : C++
1
2
3
4
5
void Case::focusInEvent(QFocusEvent * monEven)
{
	emit focus(m_index); //je comprends pas pourquoi ça envoie toujours 0
	QSpinBox::focusInEvent(monEven);
}


Le problème, c'est que le code qui reçoit ce signal reçoit toujours 0 comme valeur :

Code : C++
1
2
3
4
5
6
void Grille::aLeFocus(int position)
{
	QString message = QString("La valeur de cette case est : %1").arg(m_cases[position]->value());
	m_fenetre->afficherMessage(message);
	
}


Je cherche depuis longtemps, et je comprends vraiment pas, si quelqu'un peut me donner une piste, ce serait super (d'autant que le concours arrive à sa fin :( )

J'ai l'impression d'avoir raté quelque chose, en tout cas l'utilisation des tableaux d'objets n'est pas très pratique je trouve -_-


edit : oups, j'ai pas fini mon sous titre
Édité le 29/07/2008 à 13:10:16 par Le_bredin
 
Connecté Nanoc # Posté le 29/07/2008 à 13:46:05
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Le jour où tout le monde aura compris que les vector (ou QVector) c'est tellement mieux et tellement plus simple...

Ne devrait tu pas connecter le signal de l'Objet (donc *m_cases[i]) ?
 
Hors ligne Le_bredin # Posté le 29/07/2008 à 19:54:37
Volem rien foutre al païs !
Avatar
Groupe : Membres
Merci, tu avais raison, j'avais effectivement mis le connect au mauvais endroit, le signal ne peut pas provenir d'un tableau d'objet, il faut mettre le connect dans le constructeur de la classe la plus... euh... enfin Case dans mon cas précis.

Du coup j'ai du mettre un pointeur vers Grille dans Case, et j'ai eu un mal fou à faire ça parce qu'il fallait avoir inclus Case.h pour pouvoir déclarer grille, et Grille.h pour pouvoir déclarer Case, bref j'ai encore perdu du temps sur un problème sans être productif.

Je débute le C++ avec ce concours, donc je ne me suis pas encore penché sur la STL, les vector, tout ça, et pourtant j'ai des sueurs froides avec mes tableaux dynamiques. En tout cas Nanoc je suivrais ton cours avec attention quand j'aurais le temps.
 
Hors ligne Natim # Posté le 29/07/2008 à 21:50:19
Apprendre à coder c'est coder
Avatar
Groupe : Membres
QVector c'est du Qt pas de la STL.

Image utilisateur
 

Retour au forum "Le Sudoku : des nombres en folie !" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 426 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0801s (0.0603s)