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+ avec C & C++ Discussion :

récupérer les radios buttons sélectionnés


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 302
    Par défaut récupérer les radios buttons sélectionnés
    bonjour,

    j'ai un petit probleme pour récupérer le radio button sélectionné. J'ai bien compris que ca se met dans un groupe, mais comment récupérer de maniere simple. Voici ma fenetre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    GtkWidget*
    create_window1 (void)
    {
      GtkWidget *window1;
      GtkWidget *vbox1;
      GtkWidget *vbox2;
      GtkWidget *radiobutton1;
      GSList *radiobutton1_group = NULL;
      GtkWidget *radiobutton2;
      GtkWidget *radiobutton3;
      GtkWidget *vbox3;
      GtkWidget *radiobutton4;
      GSList *radiobutton4_group = NULL;
      GtkWidget *radiobutton5;
      GtkWidget *radiobutton6;
      GtkWidget *button1;
     
      window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      gtk_window_set_title (GTK_WINDOW (window1), _("window1"));
     
      vbox1 = gtk_vbox_new (FALSE, 0);
      gtk_widget_show (vbox1);
      gtk_container_add (GTK_CONTAINER (window1), vbox1);
     
      vbox2 = gtk_vbox_new (FALSE, 0);
      gtk_widget_show (vbox2);
      gtk_box_pack_start (GTK_BOX (vbox1), vbox2, TRUE, TRUE, 0);
     
      radiobutton1 = gtk_radio_button_new_with_mnemonic (NULL, _("barbara"));
      gtk_widget_show (radiobutton1);
      gtk_box_pack_start (GTK_BOX (vbox2), radiobutton1, FALSE, FALSE, 0);
      gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton1), radiobutton1_group);
      radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton1));
     
      radiobutton2 = gtk_radio_button_new_with_mnemonic (NULL, _("elodie"));
      gtk_widget_show (radiobutton2);
      gtk_box_pack_start (GTK_BOX (vbox2), radiobutton2, FALSE, FALSE, 0);
      gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton2), radiobutton1_group);
      radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton2));
     
      radiobutton3 = gtk_radio_button_new_with_mnemonic (NULL, _("vincent"));
      gtk_widget_show (radiobutton3);
      gtk_box_pack_start (GTK_BOX (vbox2), radiobutton3, FALSE, FALSE, 0);
      gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton3), radiobutton1_group);
      radiobutton1_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton3));
     
      vbox3 = gtk_vbox_new (FALSE, 0);
      gtk_widget_show (vbox3);
      gtk_box_pack_start (GTK_BOX (vbox1), vbox3, TRUE, TRUE, 0);
     
      radiobutton4 = gtk_radio_button_new_with_mnemonic (NULL, _("romain"));
      gtk_widget_show (radiobutton4);
      gtk_box_pack_start (GTK_BOX (vbox3), radiobutton4, FALSE, FALSE, 0);
      gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton4), radiobutton4_group);
      radiobutton4_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton4));
     
      radiobutton5 = gtk_radio_button_new_with_mnemonic (NULL, _("blandine"));
      gtk_widget_show (radiobutton5);
      gtk_box_pack_start (GTK_BOX (vbox3), radiobutton5, FALSE, FALSE, 0);
      gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton5), radiobutton4_group);
      radiobutton4_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton5));
     
      radiobutton6 = gtk_radio_button_new_with_mnemonic (NULL, _("maud"));
      gtk_widget_show (radiobutton6);
      gtk_box_pack_start (GTK_BOX (vbox3), radiobutton6, FALSE, FALSE, 0);
      gtk_radio_button_set_group (GTK_RADIO_BUTTON (radiobutton6), radiobutton4_group);
      radiobutton4_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton6));
     
      button1 = gtk_button_new_with_mnemonic (_("valider"));
      gtk_widget_show (button1);
      gtk_box_pack_start (GTK_BOX (vbox1), button1, FALSE, FALSE, 0);
     
      g_signal_connect ((gpointer) button1, "clicked",
                        G_CALLBACK (on_button1_clicked),
                        NULL);
     
      /* Store pointers to all widgets, for use by lookup_widget(). */
      GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1");
      GLADE_HOOKUP_OBJECT (window1, vbox1, "vbox1");
      GLADE_HOOKUP_OBJECT (window1, vbox2, "vbox2");
      GLADE_HOOKUP_OBJECT (window1, radiobutton1, "radiobutton1");
      GLADE_HOOKUP_OBJECT (window1, radiobutton2, "radiobutton2");
      GLADE_HOOKUP_OBJECT (window1, radiobutton3, "radiobutton3");
      GLADE_HOOKUP_OBJECT (window1, vbox3, "vbox3");
      GLADE_HOOKUP_OBJECT (window1, radiobutton4, "radiobutton4");
      GLADE_HOOKUP_OBJECT (window1, radiobutton5, "radiobutton5");
      GLADE_HOOKUP_OBJECT (window1, radiobutton6, "radiobutton6");
      GLADE_HOOKUP_OBJECT (window1, button1, "button1");
     
      return window1;
    }
    j'ai deux groupes avec dans chacun 3 radio button, je veux mettre dans une fenetre les deux radio button sélectionné.
    Voila ce que j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    void on_button1_clicked(GtkButton *button, gpointer data)
    {
         GtkWidget *pInfo;
        GtkWidget *pWindow;
        GSList *pList;
        const gchar *sLabel;
     
        /* Recuperation de la liste des boutons */
        pList = gtk_radio_button_get_group(GTK_RADIO_BUTTON(data));
     
        /* Parcours de la liste */
        while(pList)
        {
            /* Le bouton est il selectionne */
            if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pList->data)))
            {
                /* OUI -> on copie le label du bouton */
                sLabel = gtk_button_get_label(GTK_BUTTON(pList->data));
                /* On met la liste a NULL pour sortir de la boucle */
                pList = NULL;
            }
            else
            {
                /* NON -> on passe au bouton suivant */
                pList = g_slist_next(pList);
            }
        }
     
        /* On recupere la fenetre principale */
        /*
        /* A partir d'un widget, gtk_widget_get_toplevel
        /* remonte jusqu'a la fenetre mere qui nous est
        /* utile pour l'affichage de la boite de dialogue
        */
        pWindow = gtk_widget_get_toplevel(GTK_WIDGET(data));
     
        pInfo = gtk_message_dialog_new (GTK_WINDOW(pWindow),
            GTK_DIALOG_MODAL,
            GTK_MESSAGE_INFO,
            GTK_BUTTONS_OK,
            "Vous avez choisi : %s", sLabel);
     
        gtk_dialog_run(GTK_DIALOG(pInfo));
     
        gtk_widget_destroy(pInfo);
    }
    mais je sais que cette procedure ne marche que pour un groupe comment faire pour qu'elle marche pour 2 voir plus de groupe de manière simple. Je voudrais vraiment éviter les structures
    merci
    pepsister

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 302
    Par défaut
    j'ai modifié quelques trucs voci maintenant une partie de ce que j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    void on_button1_clicked(GtkButton *button, gpointer data)
    {
         GtkWidget *pInfo;
        GtkWidget *pWindow;
        GSList *pList;
        const gchar *sLabel;
        GSList *pList1;
        const gchar *sLabel1;
     GtkWidget *radio1;
      GtkWidget *radio4;   
     
        radio1=lookup_widget(GTK_WIDGET(button),"radiobutton1_group");
        radio4=lookup_widget(GTK_WIDGET(button),"radiobutton4_group");
     
        /* Recuperation de la liste des boutons */
        pList = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio1));
        /* Parcours de la liste */
        while(pList)
        {
            /* Le bouton est il selectionne */
            if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio1)))
            {
                /* OUI -> on copie le label du bouton */
                sLabel = gtk_button_get_label(GTK_BUTTON(radio1));
                /* On met la liste a NULL pour sortir de la boucle */
                pList = NULL;
            }
            else
            {
                /* NON -> on passe au bouton suivant */
                pList = g_slist_next(pList);
            }
    en fait je récupère mes listes mais je crois que c'est
    gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio1))
    qui ne lui va pas donc petit probleme je ne vois pas comment ca marche j'ai regardé le lien qu'à donné franck sur un autre message mais je ne vois toujours pas
    merci

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 302
    Par défaut
    maintenant j'ai trouvé une solution j'ai donc entamé une fenêtre plus compliqué ca marche mais ca m'affiche derriere une fenetre noir et je ne sais pas pourquoi
    voici ma fonction qui bug un peu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    /*fonction du boutton accessibles*/
    void on_button3_clicked(GtkButton *button, gpointer data)
    {
      /*déclaration des variables*/
      GtkWidget *pinfo1;
      GtkWidget *pWindow;
      GSList *pListE;
      const gchar *sLabelE;
      GSList *pListA;
      const gchar *sLabelA;
      int compE=0;
      int compA=0;
     
     
     
      /*on récupère ce que l'utilisateur a rentré pour les deux premières questions*/
     
      GtkWidget * radioE=lookup_widget(GTK_WIDGET(button),"radiobutton1");
      GtkWidget *radioA=lookup_widget(GTK_WIDGET(button),"radiobutton3");
     
     
      /* Recuperation de la liste des boutons */
      pListE = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radioE));
      /* Parcours de la liste */
      while(pListE)
      {
        /* Le bouton est il selectionne */
        if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pListE->data)))
        {
          /* OUI -> on copie le label du bouton */
          sLabelE = gtk_button_get_label(GTK_BUTTON(pListE->data));
          /*On met la liste a NULL pour sortir de la boucle */
          pListE = NULL;
        }
        else
        {
          /* NON -> on passe au bouton suivant */
          pListE = g_slist_next(pListE);
        }
      }
     
      /* Recuperation de la liste des boutons */
      pListA = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radioA));
      /* Parcours de la liste */
      while(pListA)
      {
        /* Le bouton est il selectionne */
        if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pListA->data)))
        {
          /* OUI -> on copie le label du bouton */
          sLabelA = gtk_button_get_label(GTK_BUTTON(pListA->data));
          /* On met la liste a NULL pour sortir de la boucle */
          pListA = NULL;
        }
        else
        {
        /* NON -> on passe au bouton suivant */
        pListA = g_slist_next(pListA);
        }
      }
     
     
     
      /*on compare la réponse de l'escalier à OUI*/                 
      compE=strcmp(sLabelE,"oui"); 
      /*on compare la réponse de l'ascenseur avec oui*/
      compA=strcmp(sLabelA,"oui"); 
      /*si c'est différent, on écrit les lignes dans essai */             
      if((compE==0) && (compA!=0))
      {
        pinfo1 = gtk_message_dialog_new (GTK_WINDOW(data),GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,"attention la personne ne peut pas accéder aux étages supérieurs"); 
        /* Affichage de la boite de message */
        gtk_dialog_run(GTK_DIALOG(pinfo1));
        /* Destruction de la boite de message */
        gtk_widget_destroy(pinfo1);      
      } 
      else
      {
        pinfo1 = gtk_message_dialog_new (GTK_WINDOW(data),GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,"ok"); 
        /* Affichage de la boite de message */
        gtk_dialog_run(GTK_DIALOG(pinfo1));
        /* Destruction de la boite de message */
        gtk_widget_destroy(pinfo1);
      }
     
    }
    voici le message d'erreur qui arrive quand je clique sur le boutton accessible:
    invalid UTF8 string passed to pango_layout_set_text

    de plus mon message disant:attention la personne ne peut pas accéder aux étages supérieurs
    il ne s'affiche pas en entier
    pourquoi et comment y remédier?

    en fait mes questions sont:
    pourquoi j'ai une fenêtre noire derrière quand je clique sur mon boutton accessible et comment y remédier
    pourquoi mon message ne s'affiche pas entièrement dans la fenêtre idem comment y remédier

    merci
    pepsister

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Pour la deuxième question, il faut encoder ta chaîne en UTF-8 (c'est les accents qui posent pb). Donc soit tu configures ton éditeur pour qu'il enregistre les fichiers en utf-8 ou tu convertis ton fichier après coup , tu peux aussi utiliser gettext (mais c'est plus compliqué).
    On va probablement te recommander d'autres méthodes, mais j'aime vraiment pas, donc j'en parle pas

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 302
    Par défaut
    merci beaucoup c'est bon ca marche

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

Discussions similaires

  1. Récupérer les valeurs non sélectionnées
    Par Nico_SAS dans le forum jQuery
    Réponses: 3
    Dernier message: 13/02/2012, 11h28
  2. Radio Button sélectionné, syntaxe
    Par Noun-S dans le forum C++
    Réponses: 0
    Dernier message: 20/04/2011, 10h02
  3. Récupérer le radio button checked
    Par Elstak dans le forum C++
    Réponses: 1
    Dernier message: 02/05/2009, 17h15
  4. Problème sur les radio button
    Par XRAYS dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 26/08/2008, 16h47
  5. Difficulté avec les Radio button
    Par toitonline dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 17/04/2007, 17h58

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