IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ Discussion :

connecter plusieurs signaux à une fonction


Sujet :

GTK+

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut connecter plusieurs signaux à une fonction
    Bonjour,

    j'aimerai créer une boucle qui me créer plusieurs boutons et lorsque ke clique sur chaque bouton, j'appel a chaque fois la meme fonction qui m'ouvre une boite de dialogue avec des variables differents.
    Bon, voila mon bout de code pour etre plus clair :

    dans le main j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int i=0; i<3; i++)
    {
    gchar b[32];
    sprintf(b, "Parametres %d", i);
    bouton[i] = gtk_button_new_with_label(b);
    gtk_box_pack_start(GTK_BOX(Hbox), bouton[i], TRUE, TRUE, 0);
    g_signal_connect(G_OBJECT(bouton[i]), "clicked", G_CALLBACK(Parametres), NULL);
    }
    Ainsi, j'affiche bien 3 boutons avec Parametres 0, Parametres 1 et 2.
    Maintenant, dans Parametres je déclare une nouvelle boite de dialogue et je voudrai que son titre soit tel que :

    quand je clique sur le bouton Parametres 0, j'ai comme titre Boite 0, Parametres 1 <-> Boite 1, .... donc en fonction de i.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Deux solutions possibles :
    1. Tu extrais le nom du bouton dans le CallBack Parametres();. Tu peux ensuite comparer ce nom avec les chiffres 0, 1, 2 ...
    2. Tu envoies au CallBack via le dernier paramètre de la fonction g_signal_connect(); la valeur de i.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut
    Pour la 2. méthode lorsque je fais :
    g_signal_connect(G_OBJECT(bouton[i]), "clicked", G_CALLBACK(Parametres), (gpointer)i);
    et quand je clique sur chacun des boutons, j'ai toujours le meme titre, cad avec la derniere valeur de i, ici :
    Parametres 0 <-> Boite 2
    Parametres 1 <-> Boite 2
    ...
    donc, ca ne marche pas je crois.

    La 1. méthode peux-tu la détailler car j'ai pas bien compris.

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    La première variable reçue dans ton CallBack correspond au pointeur de chaque bouton. Tu peux alors utiliser la fonction gtk_button_get_label(); pour récupérer dans un char* le nom du bouton qui a appelé le CallBack.
    A partir de là tu peux utiliser un strstr(); par exemple pour déterminer le numéro du bouton.

    Pour la deuxième méthode il existe une macro pour transmettre des nombres : GINT_TO_POINTER().

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut
    ok, enfaite il fallait que j'utilise la macro dans la 2. methode pour que ca marche.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/10/2009, 09h22
  2. Faire passer plusieurs variables à une fonction
    Par goldor dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/10/2008, 17h03
  3. passer plusieurs argument à une fonction callback
    Par Z-fly dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 04/07/2008, 18h05
  4. [EXCEL - VBA] Plusieurs boutons = une fonction
    Par Michocs17141 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/11/2007, 05h27
  5. Réponses: 3
    Dernier message: 25/07/2006, 09h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo