Bonjour j'aimerais savoir s'il existe une fonction qui permet de tester si un button a ete cliker.. le g_signal_connect ne me convient pas pour mon probleme. Merci
Bonjour j'aimerais savoir s'il existe une fonction qui permet de tester si un button a ete cliker.. le g_signal_connect ne me convient pas pour mon probleme. Merci
Bonjour.
Au vu de ta question je suppose que tu désires savoir après coup, et non à l'instant t, si un bouton a été enfoncé. Si c'est bien ça alors c'et à toi de le gérer.
Tu crées un callback attaché au bouton avec la fameuse fonction g_signal_connect(); dans lequel tu changes l'état d'un booléen dont tu auras la possibilité de sonder l'état ailleurs dans ton code. ( je ne t'incite pas par ces quelques mots à déclarer une variable globale ).
je vois mal comment determiner mon callback.
Jai une boucle qui contient plusieur button et je veux just recuperer le numero du button qui est clickei.. il me faudrai une fonction du genre is_button_clicked(button[i]).
pouriez m'ecrire un callback svp!
Bonjour.
Je comprends un peu mieux la problématique.
On peut, et je dirai même on doit, écrire tant que faire ce peut un seul callback pour gérer une liste de boutons qui vont pratiquement faire la même chose.
Il suffit donc de connecter tous les boutons à un même callback. Le prototype de ce callback te permet de récupérer en premier argument le pointeur du bouton cliqué.
Soit tu disposes de la liste des pointeurs de chaque bouton et il te suffit alors de rechercher dedans le pointeur reçu dans le callback, soit tu attaches à chaque bouton un nom via gtk_widget_set_name(); (je te donne cette fonction de tête je n'ai pas la doc sous la main) et tu récupères le nom du widget cliqué dans le callback avec gtk_widget_get_name();
De tête je crois que le prototype du callback attaché au signal clicked est void on_signal_clicked (GtkWidget *widget, gpointer userdata);
widget est le pointeur du bouton cliqué.
pouriez vous m'aider a ecrir ce callback.. le probleme C'est que en plus de recuperer les pointeur du button je veux aussi recuperer son numero(i).
Bon je vous donne un exemple:
for(i=0;i<no_voiture;i )
{ newvoiture [i], .button =gtk_button_new_with_label(ch);
g_signal_connect(newvoiture [i], .button"clicked",g_callback(on_clicked_button),NULL);}
le probleme maintenant C'est dans mon callback je veux utiliser les i du buttonvoiture pour faire newvoiture[i].statut = NON_DISPO
Montres-nous où en est ton code pour que l'on puisse t'éguiller.
Tu peux utiliser le dernier paramètre de la fonction g_signal_connect (); pour transmettre le i. Il te faudra par contre transformer ta variable en pointeur. Pour se faire tu utilises la macro #define GINT_TO_POINTER(i) ((gpointer) (glong) (i))
jai essayei d l faire maint fois. mai jl maitrise pas telment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for(i=0;i<no_voiture;i ) { newvoiture [i], .button =gtk_button_new_with_label(ch); g_signal_connect(newvoiture [i], .button"clicked",g_callback(on_clicked_button), GINT_TO_POINTER (i));}
Et maintenan coma utiliser ce i dans mon callback
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void user_function (GtkButton *Button, gpointer user_data) { gint i = GPOINTER_TO_INT (user_data); ... }
merci bocoup C exatmen ce dont javai besoin.. jmen veux de ce pas l'essayer
jai essayei mai sa m donne pas le temp en tant que telle.. sa converti just ladress du pointeur en int
ça marche. vous venez de sauver mon projet de fin d'anne merci
De rien
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager