[Débutant][QT4] De l'aide pour un signal/slot

De l'aide pour un signal/slot [Débutant][QT4] - C++ - Programmation

Marsh Posté le 08-11-2007 à 16:19:48    

Yop!!
 
Je crée dynamiquement des boutons à partir d'un click de l'utilisateur sur un bouton.
Ces boutons sont crées de la manière siuvante :
 

Code :
  1. QPushButton  *buttonTab[MAX];
  2. buttonTab[number] = new QPushButton(ui.frame);


 
"number" est un attribut local à une autre fonction qui appelle celle-ci. Il représente en gros le numéro du bouton (l'index).
Dans la fonction qui crée ce bouton, je crée également un CONNECT de la mnière suivante :
 

Code :
  1. CONNECT( buttonTab[number], clicked(), this, slideVideo() );


 
La fonction slideVideo est la suivante :
 

Code :
  1. void UserInterface::slideVideo( )
  2. {
  3.        
  4.      timeToGo = tableauUser[number].tpsBegin;
  5.                        
  6.      test.sliderUpdate( timeToGo );
  7.      
  8. }


 
Le problème est qu'à la compilation, il ne connait pas "number" puisque c'est un attribut local d'une autre fonction.
Néanmoins, ça ne fonctionne pas non plus si je le passe nen attribut global de la classe (il me garde l'index du dernier bouton crée) ou si j'essaye de faire :
 

Code :
  1. CONNECT( buttonTab[number], clicked(int), this, slideVideo(int) );


 
Puis en appelant ma fonction slideVideo avec ce paramètre (ça me semble normal mais bon ça coûte rien d'essayer  :) )
 
Si quelqu'un sait comment je peux récupérer l'index du bouton sur lequel l'utilisateur clique, ça serait sympa de me filer des indications...
 
Merci d'avance!


Message édité par Joker28 le 08-11-2007 à 16:21:15
Reply

Marsh Posté le 08-11-2007 à 16:19:48   

Reply

Marsh Posté le 13-11-2007 à 21:07:41    

Code :
  1. connect(objet_source, SIGNAL(signal_toto()), objet_dest, SLOT(slot_toto()) );


 
Un signal doit être défini dans la classe que ton objet_source instancie
Un slot, c'est pareil pour l'objet destination et en plus il doit être implémenté.
 
Tu devrais faire les tutos, ils sont bien documentés

Reply

Marsh Posté le 13-11-2007 à 22:24:30    


+10
 
Dumbledore> je vois pas le rapport avec sa question :s

Reply

Marsh Posté le 17-11-2007 à 14:38:03    

son code là :

Code :
  1. CONNECT( buttonTab[number], clicked(), this, slideVideo() );

 
n'est pas bon
 
Sinon, en effet, j'avais pas pensé au signal mapper (que j'ai encore jamais eu l'occasion d'utiliser en fait)


Message édité par Dumbledore le 17-11-2007 à 14:40:04
Reply

Marsh Posté le 17-11-2007 à 14:59:18    

Oula oui pardon je devais pas être réveillé quand j'ai lu son post http://www.pcinpact.com/forum/style_emoticons/default/transpi.gif  (ceci dit, je pense à une erreur de copie, parce qu'il aurait eu une erreur de compil autre que celle dont il parle).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed