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 :

Modification liste deroulante avec GTK


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 109
    Par défaut Modification liste deroulante avec GTK
    Bonjour,

    Je commence a peine avec la librairie GTK et j'ai beaucoup de mal. voila je voudrais que lorsque j'appui sur le bouton OK , mon combobox2 se rempli ...

    MAis en fait ca bug quand je clique sur OK

    Je vous donne mon code au cas ou...
    SVP j'ai besoin d'aide, si vous connaissez de bon tutoriel en Francais ou autre je suis prenneur ... merci


    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
    #include <stdlib.h>
    #include <gtk/gtk.h>
    #include <stdio.h>
     
     void copy(GtkWidget *Combo2,gpointer *Data,GList *list2)
     {
     
         list2 = g_list_append(list2, g_strdup_printf("ici ", 2)); // ajoute une chaine a le liste
         list2 = g_list_append(list2, g_strdup_printf("prout", 3)); // ajoute une chaine a le liste
         list2 = g_list_append(list2, g_strdup_printf("la bas", 4)); // ajoute une chaine a le liste
           gtk_combo_set_popdown_strings( GTK_COMBO(Combo2), list2);
     }
    int main(int argc, char *argv[])
    {
     
         GtkWidget *Titre, *Combo1, *Combo2,*Bouton,*Boute;
         GList *list = NULL;
         GList *list2 = NULL;
         gint i;
         char prout[50];
     
         gtk_init(&argc, &argv);
     
         Titre = gtk_dialog_new();
         gtk_window_set_title(GTK_WINDOW(Titre), "Logicel Expertise A2C - Loi SAE");
         gtk_widget_show(Titre);
         /*Pour determiner la taille*/
         gtk_widget_set_usize(GTK_WIDGET(Titre),500, 300);
     
     
         list = g_list_append(list, g_strdup_printf("2008", 1));
     
         strcpy(prout,"test");
     
     
         list2 = g_list_append(list2, g_strdup_printf(prout, 1)); // ajoute une chaine a le liste
     
         /*Permet d'init l'interface*/
         Combo1 = gtk_combo_new(); // cree une liste deroulante
         gtk_box_pack_start(GTK_BOX(GTK_DIALOG(Titre)->vbox), Combo1, TRUE, TRUE, 5);
         gtk_combo_set_popdown_strings( GTK_COMBO(Combo1), list) ; // met la liste dans la conbo box
         gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(Combo1)->entry), "Annee d'expiration"); // definit le texte de la conbo box
     
         gtk_widget_show(Combo1);
     
         Combo2 = gtk_combo_new(); // cree une liste deroulante
         gtk_box_pack_start(GTK_BOX(GTK_DIALOG(Titre)->vbox), Combo2, TRUE, TRUE, 5);
         gtk_combo_set_popdown_strings( GTK_COMBO(Combo2), list2) ; // met la liste dans la conbo box
         gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(Combo2)->entry), "Dispositif a mettre en place"); // definit le texte de la combobox
     
     
         gtk_widget_show(Combo2); 
     
         Bouton = gtk_button_new_with_label("Fermer");
         gtk_signal_connect_object(GTK_OBJECT(Bouton), "clicked", (GtkSignalFunc)gtk_exit, NULL);
         gtk_box_pack_start(GTK_BOX(GTK_DIALOG(Titre)->action_area), Bouton , TRUE, TRUE, 0);
         gtk_widget_show(Bouton);
     
         gtk_main();
     
         return(0);
    }

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Tu utilise quelle version de GTK+ ? Tu utilise pas mal de fonctions obsolètes :


    La fonction g_strdup_printf fonctionne comme printf, pourquoi tu lui passe un second paramètre ?

    Pour le tuto : Liens utiles

    Et c'est pour utiliser les balises [quote] à la place de [code]

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 109
    Par défaut
    Franchement , jai repris ceci sur un prog deja existant ... je vais essayer de modifier ce que tu ma dit

    Mais pr ma question ?? comment savoir le texte que j'ai selectionné dans ma combobox??

    Merci mille fois


    ps: si je met printf ("ici") .. ben ca bug la aussi .. une soluce pour rajouter du texte dans mon combobox lors de mon clique sur le bouton

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par le_sonic
    comment savoir le texte que j'ai selectionné dans ma combobox??
    Tu peux essayer avec la fonction gtk_combo_box_get_active_text !
    Il faut toujours prendre le soin de regarder dans la référence de l'api: http://developer.gnome.org/doc/API/2.0/gtk/index.html
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par le_sonic
    Franchement , jai repris ceci sur un prog deja existant ... je vais essayer de modifier ce que tu ma dit
    Ca c'est pas toujours la meilleure solution, surtout si tu débute avec GTK+, le mieux c'est de lire des tutorials et il se trouve qu'on en dispose en grand nombre en francais, avec notre ami c'est trouvé en quelques secondes Résultat recherche (en 3 secondes chrono) et sinon dans le meilleur des cas il existe un grand nombre de ressources et de liens comme te l'as donné notre cher ami gege
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 109
    Par défaut
    Merci a toi Franck , j'ai regardé les tutorials .. mais j'ai aps trouvé pour les listes deroulantes ... svp un peu d'aide
    Je dois le finir pr la fin de semaine ...

    Merci

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Par défaut
    Je ne sais pas si je dis une bétise ou pas ...

    Pour le g_signal_connect de ton bouton Ok tu lui passes Titre, mais dans la fonction copy tu lui donnes :
    Premier paramètre : Titre
    Second paramètre : GtkWidget à l'origine de l'événenement
    Troisième paramètre : Une liste qu'il ne connait pas et qui n'est pas définie (avec le débugeur VS.NET on le voit de suite ...

    Fait des impression de l'adresse de tes listes tu verras que ce n'est pas la liste que tu veux qui se remplit ...

    Et en fait vu que tes variables sont locales au main tu ne peux pas les appeler de la fonction copy ...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Par défaut
    Une solution possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void copy(GtkWidget *Combo2,gpointer *Data)
     {
         Recupérer la liste à partir de Combo2 casté en combo
         ajouter à la liste les éléments voulus
         gtk_combo_set_popdown_strings( GTK_COMBO(Combo2), list);
     }
     
    et :
     
     gtk_signal_connect_object(GTK_OBJECT(Boute), "clicked",GTK_SIGNAL_FUNC (copy), Combo2);

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par le_sonic
    Merci a toi Franck , j'ai regardé les tutorials .. mais j'ai aps trouvé pour les listes deroulantes ... svp un peu d'aide
    Je dois le finir pr la fin de semaine ...

    Merci
    Heu si tu lis bien je t'est répondu d'après ta question: http://www.developpez.net/forums/sho...62&postcount=4 plus je peut pas faire à moins que ce n'est pas ce que tu cherches mais dans ce cas je te conseil d'être plus précis ou de mieux d'exprimer !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 109
    Par défaut
    Citation Envoyé par Ange44
    Une solution possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void copy(GtkWidget *Combo2,gpointer *Data)
     {
         Recupérer la liste à partir de Combo2 casté en combo
         ajouter à la liste les éléments voulus
         gtk_combo_set_popdown_strings( GTK_COMBO(Combo2), list);
     }
     
    et :
     
     gtk_signal_connect_object(GTK_OBJECT(Boute), "clicked",GTK_SIGNAL_FUNC (copy), Combo2);


    Oui j'y suis presque mais comment faire le test pour reconnaitre son contenu actuelle ... help

    Citation Envoyé par Franck.H
    Tu peux essayer avec la fonction gtk_combo_box_get_active_text !
    Il faut toujours prendre le soin de regarder dans la référence de l'api: http://developer.gnome.org/doc/API/2.0/gtk/index.html
    OK mais je lui mais koi en parametre ?? j'ai testé plusieur chose mais ca marche pas !

    ps : je mettrais ma soluce aprés

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Par défaut
    Euh je vérifierai demain mais je crois que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((GtkCombo*)data)->text
    donne le text à l'origine de l'événement ... à moins que ce soit autre chose que GtkCombo*

    Je vérifie et je te dis ça demain

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Par défaut
    Donc si je ne me trompe pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    std::string textDeLaComboBox = GTK_ENTRY(GTK_COMBO(comboBox)->entry)->text;
     
    comBox : comboBox dont on veut récupérer l'entrée
    Dis moi si c'est bien ça mais je suis à peu près dur de moi à 97%

  13. #13
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Ange44
    Donc si je ne me trompe pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    std::string textDeLaComboBox = GTK_ENTRY(GTK_COMBO(comboBox)->entry)->text;
     
    comBox : comboBox dont on veut récupérer l'entrée
    Dis moi si c'est bien ça mais je suis à peu près dur de moi à 97%
    Moi je sûr à 100% que du fait du C++ ici et non du C !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  14. #14
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    [QUOTE=le_sonic]OK mais je lui mais koi en parametre ?? j'ai testé plusieur chose mais ca marche pas !/QUOTE]

    Bin faut lire la doc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char * s = gtk_combo_box_get_active_text (GTK_COMBO (ton_combobox));
    Rien de plus et rien de moins mais cependant il faut créer les ComboBox comme cela est précisé dans la petit note sinon ca ne marche pas:

    Note that you can only use this function with combo boxes constructed with gtk_combo_box_new_text() and with GtkComboBoxEntrys.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 117
    Par défaut
    Citation Envoyé par Franck.H
    Moi je sûr à 100% que du fait du C++ ici et non du C !
    Oui je suis désolé ...

    En fait je suis sur un projet où j'ai récupéré du code pour une interface GTK. Le projet est cencé être en C++ mais la personne avant moi n'a pas trop respectée la norme (genre les printf et tout ...) donc je ne peux pas me permettre de perdre du temps à tout repasser à la norme C++ ...

    J'ai voulu donner du code qui marchait je n'ai pas pensé à vérifier si c'était du C ou du C++ désolé ...

    mea culpa

  16. #16
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 109
    Par défaut
    Bin faut lire la doc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char * s = gtk_combo_box_get_active_text (GTK_COMBO (ton_combobox));
    Rien de plus et rien de moins mais cependant il faut créer les ComboBox comme cela est précisé dans la petit note sinon ca ne marche pas:
    Le prob, c'est que j'utilise un autre moyen

    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
     // Create the combo box 
      combo = gtk_combo_box_new ();
     
     
    // Set the model 
      gtk_combo_box_set_model (GTK_COMBO_BOX (combo), GTK_TREE_MODEL (store));
      gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo), &iter);
     
      renderer = gtk_cell_renderer_text_new ();
     gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
      gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), 
    				  renderer, "text", 1, NULL);
     
      gtk_container_add (GTK_CONTAINER (pVBox), combo);
     
     gtk_tree_store_append (store, &iter, NULL);
            gtk_tree_store_set (store, &iter, 0, NULL, 1, "text 1", 2, FALSE, -1);
            gtk_tree_store_append (store, &iter, NULL);
            gtk_tree_store_set (store, &iter, 0, NULL, 1, "text 2", 2, FALSE, -1);
            gtk_tree_store_append (store, &iter, NULL);
            gtk_tree_store_set (store, &iter, 0, NULL, 1, "text 3", 2, FALSE, -1);

    Je touche du doigt la fin de mon prog... il me mank plus que cela

Discussions similaires

  1. alimenter liste deroulante avec champs texte
    Par logone dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 26/05/2006, 11h53
  2. Réponses: 3
    Dernier message: 05/05/2006, 03h05
  3. Zone de liste deroulante avec preselection précise
    Par dynexd dans le forum Access
    Réponses: 7
    Dernier message: 20/02/2006, 17h25
  4. Liste deroulante avec Zone de texte associée
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 26/05/2005, 12h19
  5. liste deroulante avec plusieurs champs
    Par JulienT dans le forum Struts 1
    Réponses: 4
    Dernier message: 20/04/2004, 17h17

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