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 :

combobox avec gtk


Sujet :

GTK+ avec C & C++

  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 combobox avec gtk
    bonjour,

    voila je ne comprend pas bien comment glade marche.
    J'ai recopier une procédure qui marche avec GTK et quand c'est moi qui construit ma fenêtre graphique par contre quand c'est avec glade c'est un peu différent il fait tout dans des fonctions et je n'arrive pas à voir comment il fait le lien entre imaginons un entry graphique et un entry que je vais utiliser pour programmer.
    en fait voila mon code:

    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
     
    void
    on_comboboxentry3_changed(GtkComboBox *combobox, gpointer user_data)
    {
     
     
    GList *plist = NULL;
    gint i=0;	
    /*permet d'ajouter une chaîne à la liste*/
       	for(i=0; i<10; i++)
    	plist = g_list_append(plist, g_strdup_printf("chaine %d", i));
     
     
     /*met la liste dans la combo box*/
    	gtk_combo_set_popdown_strings( GTK_COMBO(combobox), plist) ;
     
    }
    je sais que comboboxentry3 c'est le nom donné sous glade donc en graphique et je suppose que combobox mis en arguments dans la fonction est celle qu'il déclare pour la programmation donc ca devrait être bon, mais ca ne marche pas. Faut-il que je déclare autre chose à l'extérieur de ma fonction
    enfin je ne vois pas où est mon erreur si quelqu'un peut m'aider ca devient urgent que je comprenne glade.

    merci
    pepsister

  2. #2
    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 pepsister
    J'ai recopier une procédure qui marche avec GTK et quand c'est moi qui construit ma fenêtre graphique par contre quand c'est avec glade c'est un peu différent il fait tout dans des fonctions et je n'arrive pas à voir comment il fait le lien entre imaginons un entry graphique et un entry que je vais utiliser pour programmer.
    Il n'y a pas spécialement de liaison à proprement parler. Quand tu disposes tes widgets graphiquement sous Glade, il créé un fichier XML qui contient toutes les infos de mises en place et propriétés des widgets. Lorsque du fait une génération du code, il transpose les données du XML en C donc il n'y a aucune liaison. Il parait que la version change du tout au tout mais je l'ai pas testé, d'ailleurs je n'utilise que très très peu Glade (des fois c'est juste à titre expérimental)


    Citation Envoyé par pepsister
    je sais que comboboxentry3 c'est le nom donné sous glade donc en graphique et je suppose que combobox mis en arguments dans la fonction est celle qu'il déclare pour la programmation donc ca devrait être bon, mais ca ne marche pas. Faut-il que je déclare autre chose à l'extérieur de ma fonction, enfin je ne vois pas où est mon erreur si quelqu'un peut m'aider ca devient urgent que je comprenne glade.
    En fait ceci n'est rien d'autre qu'un callback, comme tu les faits toi même en code. Le nom comboboxentry3 n'est pas seulement le nom donné sous Glade mais c'est lnom qu'il utilise pour déclarer, initialiser et créer le widget. La fonction étant un callback, le premier argument de cette fonction est donc le widget qui récupère l'événement, cet argument est donc passé automatiquement par GTK+, comme d'habitude quoi !

    Pour pouvoir mieux t'aider, il faudrait que je vois ton code (pas celui de Glade) !
    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 !

  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
    ce que je t'ai envoyé c'est moi qui l'est programmer. En fait glade m'a mis automatiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void
    on_comboboxentry3_changed(GtkComboBox *combobox, gpointer user_data)
    {
    et moi j'ai écris le reste comme en gtk mais faut-il que je déclare autre chose avant le void?
    ce n'est pas glade qui l'a programmé.
    Sinon je n'utilise pas la nouvelle version de glade mais la version 2.6.
    en fait si j'ai bien compris combobxentry3 c'est le nom de la combo en interface graphique et combobox qui passe en argument c'est ce qui récupère l'intérieur de la combo? c'est ca.

    pepsister

  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 pepsister
    ce que je t'ai envoyé c'est moi qui l'est programmer. En fait glade m'a mis automatiquement :

    void
    on_comboboxentry3_changed(GtkComboBox *combobox, gpointer user_data)
    {

    et moi j'ai écris le reste comme en gtk
    Ouais normal ca

    Citation Envoyé par pepsister
    mais faut-il que je déclare autre chose avant le void?
    ce n'est pas glade qui l'a programmé.
    Bin tu as juste à déclarer ce que tu utilises dans la fonction (mieux vaut le déclarer dans la fonction d'ailleurs), comme d'habitude quoi mais les widgets que tu disposes graphiquement c'est Glade si s'occupe de leur déclaration et création comme tu as pû t'en douter

    Citation Envoyé par pepsister
    en fait si j'ai bien compris combobxentry3 c'est le nom de la combo en interface graphique
    Oui

    Citation Envoyé par pepsister
    et combobox qui passe en argument c'est ce qui récupère l'intérieur de la combo? c'est ca.
    Nan, comme je te l'ai dit plus haut, cet argument c'est LE GtkComboBox qui récupère l'événement donc ici combobxentry3 ce qui te permet de l'utiliser directement depuis cet argument dans ton callback, c'est la même chose que sans Glade, ca ne reste que du GTK+ rien de plus et rien de moins !
    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
    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 bien compris que ca marche comme gtk et ce que vous m'avez dit. J'ai fais tout comme sous gtk.La fonction que j'ai à faire a déjà été faite pour une autre fenêtre où c'est moi qui avait programmer la fenêtre et ca marche alors pourquoi avec glade ca marche pas c'est ca que je comprend pas il doit bien y avoir des trucs qui changent mis à part les noms des variables.
    Je ne comprend vraiment pas.Je suis vraiment bloquée

  6. #6
    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 pepsister
    j'ai bien compris que ca marche comme gtk et ce que vous m'avez dit. J'ai fais tout comme sous gtk.La fonction que j'ai à faire a déjà été faite pour une autre fenêtre où c'est moi qui avait programmer la fenêtre et ca marche alors pourquoi avec glade ca marche pas c'est ca que je comprend pas il doit bien y avoir des trucs qui changent mis à part les noms des variables.
    Je ne comprend vraiment pas.Je suis vraiment bloquée
    Hé bien passe le code complet de ton programme, si c'est trop gros fait un zip et met le en pièce jointe à ton futur post !
    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 !

  7. #7
    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
    en fait j'ai peut etre pas utiliser le bon signaux pour remplir une combobox à la main? J'ai mis un "changed" faut il mettre autre chose?voici ce que me crée glade:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    comboboxentry3 = gtk_combo_box_entry_new_text ();
      gtk_widget_show (comboboxentry3);
      gtk_box_pack_start (GTK_BOX (vbox4), comboboxentry3, TRUE, TRUE, 0);
      gtk_widget_set_size_request (comboboxentry3, 56, -1);
     
    g_signal_connect ((gpointer) comboboxentry3, "changed",
                        G_CALLBACK (on_comboboxentry3_changed),
                        comboboxentry3);
    voici ma fonction:

    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
     
    void on_comboboxentry3_changed(GtkComboBox *comboboxentry3, gpointer user_data)
    {
     
    GList *plist = NULL;
    gint i=0;	
    /*permet d'ajouter une chaîne à la liste*/
       	for(i=0; i<10; i++)
    	plist = g_list_append(plist, g_strdup_printf("chaine %d", i));
     
     
     /*met la liste dans la combo box*/
    	gtk_combo_set_popdown_strings( GTK_COMBO(comboboxentry3), plist) ;
     
     
    }
    je ne comprend donc pas pourquoi ca ne marche pas.
    merci de m'aider
    pepsister

  8. #8
    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
    Il y'a surtout une très grande confusion, je vais te rafraîchir quelques petites choses ... Tu utilises un GtkComboBoxEntry, jusque là tout va bien, mais dans ton callback, tu utilises la fonction gtk_combo_set_popdown_strings qui elle fait partie du widget GtkCombo et qui lui, est "déprécié" et donc, il ne faut plus l'utiliser pour les développements actuels et futurs sauf biensûr, si tu utilises une version antérieur ou égale à la version 2.4 de GTK+ !

    Pour info également vu que ca faisait parti de ta question, le signal changer de GtkComboBox donc également GtkComboBoxEntry permet de faire une action lorsque l'élément courant à changé donc également à chaque fois que tu tapes un caractère à l'intérieur de la zone de texte du widget.
    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 !

  9. #9
    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
    comment dois je faire alors? faut -il que je choisisse comme signaux un gtkwidget-show? j'ai compris ce que tu m'as dit et donc je dois plutot prendre une fonction prédéfini dans widget de la combo mais laquel, je ne sais toujours pas comment faire

  10. #10
    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 pepsister
    comment dois je faire alors? faut -il que je choisisse comme signaux un gtkwidget-show? j'ai compris ce que tu m'as dit et donc je dois plutot prendre une fonction prédéfini dans widget de la combo mais laquel, je ne sais toujours pas comment faire
    Hé bien étant donné que tu utilises déjà un GtkComboboxEntry créé avec la fonction gtk_combo_box_entry_new_text, tu peux utiliser ces fonctions pour insérer du texte et en supprimer :

    Tel que c'est indiqué dans la référence de l'API...
    Convenience function which constructs a new editable text combo box, which is a GtkComboBoxEntry just displaying strings. If you use this function to create a text combo box, you should only manipulate its data source with the following convenience functions: gtk_combo_box_append_text(), gtk_combo_box_insert_text(), gtk_combo_box_prepend_text() and gtk_combo_box_remove_text().
    Il faut juste chercher c'est tout ou du moins faire le lien entre divers widgets de la même famille c'est tout (donc plus besoin de ta GList ... à supprimer)

    Maintenant, si comme j'ai compris, tu souhaite remplir ton ComboBox lors de l'appuie par la touche Entrée sur la zone de texte du widget, il te faut alors connecter le signal activate du widget enfant du GtkComboBoxEntry qui est ca va de soi, un GtkEntry comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       g_signal_connect (
          G_OBJECT (GTK_ENTRY (GTK_BIN (comboboxentry3)->child)),
          "activate",
          G_CALLBACK (on_comboboxentry3_changed),
          (gpointer) comboboxentry3
       );
    Voilà, c'est tout
    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 !

  11. #11
    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
    je suis désolée mais je ne comprend vraiment pas comment ca marche j'ai mis ce que tu m'as dit et ca ne marche toujours pas.
    En fait je souhaite quand on éxécute que lorsque l'utilisateur clique sur la flèche de la combobox il y ait une liste de nombre mais ces nombres je ne dois pas les rentrer au clavier mais avec une boucle dans une fonction et je ne vois pas quoi utiliser comme fonction que me propose glade.
    j'ai essayé d'utilisé un button-press-event est ce que ca pourrait etre ca?En fait je dois aller dans signaux dans glade et là il me propose différent signaux j'en ajoute un ce qui me permet que glade me marque la forme de ma fonction après je dois la programmer et ce que tu m'as proposé n'est pas proposé par glade et je ne comprend pas comment ca marche ce que vous m'avez dit.
    Voila les différents signaux que me propose glade:
    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
    signaux de gtk widget
    accel-closures-changed
    button-press-event
    button-release-event
    can-activate-acel
    child-notify
    client-event
    configure-event
    delete-event
    destroy-event
    direction-changed
    drag-begin
    drag-data-delete
    drag-data-get
    drag-data-received
    drag-drop
    drag-end
    drag-leave
    drag-motion
    enter-notify-event
    event
    event-after
    expose-event
    focus
    focus-in-event
    focus-out-event
    grab-focus
    grab-notify
    hide
    hierarchy-changed
    key-press-event
    key-release-event
    map
    map-event
    mnemonic-activate
    motion-notify-event
    no-expose-event
    parent-set
    popup-menu
    property-notify-event
    proximity-in-event
    proximity-out-event
    realize
    screen-changed
    scroll-event
    selection-clear-event
    selection-get
    selection-notify-event
    selection-received
    selection-request-event
    show
    show-help
    size-allocate
    size-request
    
    signaux de gtkcombobox
    changed
    peux tu me dire lequel utiliser et quoi mettre en parametre car je t'avoue que là je ne compend plus rien et je desespere ca fait plus de deux semaines que je suis sur ce probleme du coup je n'avance pas du tout car j'ai que des combobx à remplir avec des boucles dans des fonctions générée par glade

  12. #12
    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 pepsister
    En fait je souhaite quand on éxécute que lorsque l'utilisateur clique sur la flèche de la combobox il y ait une liste de nombre mais ces nombres je ne dois pas les rentrer au clavier mais avec une boucle dans une fonction et je ne vois pas quoi utiliser comme fonction que me propose glade.
    Glade ne te propose pas de fonctions, ce n'est qu'un RAD (un programme pour créer la GUI par glisser/déposer si tu préfères). A ce que j'en lit tu n'as donc nullement besoin d'un GtkComboBoxEntry dans ce cas, un GtkComboBox suffirait (fallait t'exprimer plus clairement depuis le début !) et tu n'as aucun besoin du tout de travailler avec les signaux vu que tu souhaite remplir ton combo par le biais d'une boucle donc il n'y de ce fait aucun événement utilisateur.

    Tu confond pas mal de choses depuis que tu t'ai mis sur Glade mais cela ne doit pas te changer la vie plus que ca, Glade ne change rien ou du moins pas grand chose quant au développement en GTK+, tu programmes en GTK+ comme tu le faisait avant de passer à Glade point bas !

    Bon passons ... Pour ton cas alors si cette fois j'ai bien tout saisi, tu créés un GtkComboBox avec la fonction gtk_combo_box_new_text puis, juste après sa création donc pas dans une fonction spécifique (enfin tu peux en faire une perso mais ce ne sera pas un callback, ne surtout pas confondre !). Dans ta boucle, à chaque itération, tu créés une nouvelle chaîne avec la valeur que tu souhaite entrer dans ta liste combo. Pour créer une chaîne tu peux par exemple utiliser g_sprintf. Une fois la chaîne créée, tu la rentre dans ton ComboBox avec la fonction gtk_combo_box_append_text !

    Voilà !
    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 !

  13. #13
    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
    désolé, c'est vrai que je me suis mal expliqué en fait voila tout le problème:
    j'ai dexu combobox une qui contient les chiffres du mois donc de 1 à 31 et une autre qui contient les mois. En fait la première est rempli directement au clavier et je souhaite remplir la deuxième en fonction de la première c'est à dire que si l'utilisateur sélectionne 31 je veux qu'on lui propose que les mois qui vont jusqu'à 31 jours.
    En fait je voudrais récupérer ce qui a été séléctionner dans ma première combobox et si c'est 31 marquer les mois en 31
    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    la comboboxentry4 contient les jours et la 5 les mois
     
     if (comboboxentry4=="31") {
      then
      {
          gtk_combo_box_append_text (GTK_COMBO_BOX (comboboxentry4), _("janvier"));}
    else 
    gtk_combo_box_append_text (GTK_COMBO_BOX (comboboxentry4), _("fevrier"));}
    mais comment récupérer ce qui a été marqué dans ma combobox est ce que ma condition est bonne je met comboboxentry4=="31"
    j'avoue que la je mélange un peu tout
    merci de ta patience franck

  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
    Citation Envoyé par pepsister
    [...] est ce que ma condition est bonne je met comboboxentry4=="31"
    Nan car si tu te souviens de tes cours de C, tu sais très bien qu'on ne peut pas faire de comparaison avec une chaîne de caractères par ce moyen !

    Pour récupérer l'élement sélectionné dans ton GtkComboBox, il faut que tu utilises la fonction gtk_combo_box_get_active_text puis que tu convertisse la chaîne en nombre avec la fonction strtol et seulement après, tu peux convertir tes deux entiers

    Il faut prendre l'habitude de chercher les renseignement dans la ref officielle de GTK+, y'a tout là dedans.
    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 é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
    L'aide GTK je ne l'ai pas j'arrive pas à l'avoir la seule chose que j'utilise c'est le site de gtk et ces fonctions là ne sont pas écrite j'ai jamais utiliser strtol mais je suis contente d'utiliser de nouvelles chose par contre il n'accepte pas mon gtk_combo_box_get_active_text je pense que c'est a cause du "text" que j'ai pas du déclarer comme il faut. voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     int value = 0;
      const char *text = NULL;
      comboboxentry4 = gtk_combo_box_entry_new_text ();
      gtk_widget_show (comboboxentry4);
      gtk_box_pack_start (GTK_BOX (vbox5), comboboxentry4, TRUE, TRUE, 0);
      gtk_widget_set_size_request (comboboxentry4, 100, -1);
      text=gtk_combo_box_get_active_text(GTK_COMBO_BOX (comboboxentry4));
      value=strtol(text, NULL,10);
     
      if (value==31)
          gtk_combo_box_append_text (GTK_COMBO_BOX (comboboxentry4), _("janvier"));
      else
          gtk_combo_box_append_text (GTK_COMBO_BOX (comboboxentry4), _("fevrier"));
    voila les erreurs qu'il me met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [Warning] assignment makes pointer from integer without a cast 
    [Linker error] undefined reference to `gtk_combo_box_get_active_text'
    j'avoue que je vois pas trop ce qui veut dire comme deuxième erreur peut etre est elle du à la première?

  16. #16
    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
    Cette fonction n'est disponible qu'à partir de la version 2.6 de GTK+ ... il serais regrettable que tu en soi encore à une version plus ancienne, GTK en est déjà à la version 2.10 D'ailleurs, il faut remplir la liste combo avant de vouloir essayé d'accéder à l'élément actif !

    Une solution pour palier au problème de version, serait d'utiliser cette fonction:
    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
    #if GTK_CHECK_VERSION (2, 6, 0)
    #define combo_box_active_get_text(combo_box) gtk_combo_box_get_active_text (combo_box)
    #else
    char *combo_box_active_get_text (GtkComboBox *combo_box)
    {
      gchar *s_text = NULL;
      gboolean b_ret = FALSE;
      GtkTreeIter iter;
     
      g_return_val_if_fail (combo_box != NULL, s_text);
     
      b_ret = gtk_combo_box_get_active_iter (combo_box, &iter);
      if (b_ret)
      {
        GtkTreeModel *p_model = NULL;
     
        p_model = gtk_combo_box_get_model (combo_box);
        if (p_model != NULL)
        {
          gtk_tree_model_get (p_model, &iter, 0, &s_text, -1);
        }
      }
      return s_text;
    }
    #endif
    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 !

  17. #17
    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 pepsister
    [...] jamais utiliser strtol mais je suis contente d'utiliser de nouvelles chose [...]
    Cette fonction n'appartiens pas à GTK+ mais directement à la bibliothèque standard du C

    Citation Envoyé par pepsister
    L'aide GTK je ne l'ai pas j'arrive pas à l'avoir la seule chose que j'utilise c'est le site de gtk et ces fonctions là ne sont pas écrite
    Biensûr que si elles le sont, faut aller dans la page du GtkComboBox c'est tout: http://developer.gnome.org/doc/API/2...kComboBox.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 !

  18. #18
    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
    en effet je suis à la version 2.4 donc je pense que c'est pour ca. Mais dois je recopier mot pour mot ce que tu m'as donné car la je t'avoue que ce que tu as marqué c'est au dessus de mes compétences je fais du C depuis 4 mois et GTK depuis 2mois donc j'ai encore pas mal de difficultés.

  19. #19
    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
    Oui il te suffit simplement de recopier la fonction telle que je te l'ai donné, je l'ai justement écrite (et quelques modifications par gege2061) pour ceux qui n'ont pas accès à cette fonction.

    Ce qu'elle fait au début (enfin là ce n'est pas la fonction directement) suivant ces quelques lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #if GTK_CHECK_VERSION (2, 6, 0)
    #define combo_box_active_get_text(combo_box) gtk_combo_box_get_active_text (combo_box)
    #else
    c'est en fait un test à la première ligne sur la version de GTK+, si la version est au moins 2.6.0 alors, on définit la fonction define combo_box_active_get_text en tant celle d'origine soit gtk_combo_box_get_active_text ce qui à pour résultat d'appeler simplement la fonction de GTK+ et pas l'autre sinon, c'est celle définie en-dessous qui sera utilisée tout simplement.
    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 !

  20. #20
    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
    en fait j'ai trouver une autre solution pour récupérer la valeur de ma combobox en tout cas ca fait exécuter le programme. Le seul petit hic c'est qu'il ne rentre jamais dans la suite du si il va directement dans le alors. Voici mon code:

    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
     
    int value = 0;
      const gchar *text = NULL;
      comboboxentry4 = gtk_combo_box_entry_new_text ();
      gtk_widget_show (comboboxentry4);
      gtk_box_pack_start (GTK_BOX (vbox5), comboboxentry4, TRUE, TRUE, 0);
      gtk_widget_set_size_request (comboboxentry4, 100, -1);
      /*récupéation de la catégorie*/
      text=gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(comboboxentry4)->entry));
     // text=gtk_combo_box_get_active_text(GTK_COMBO_BOX (comboboxentry4));
      value=strtol(text, NULL,10);
     
      if (value=="31")
          gtk_combo_box_append_text (GTK_COMBO_BOX (comboboxentry4), _("janvier"));
      else
          gtk_combo_box_append_text (GTK_COMBO_BOX (comboboxentry4), _("fevrier"));
    en fait n'importe quelle valeur que je choisi dans la combobox il m'affiche toujours fevrier je pense que c'est soit ma condition qui ne s'écrit pas comme ca mais en l'écrivant autrement ca ne compile pas du tout soit mon value ne va pas.
    merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. PB de chargement de combobox avec une requete
    Par bubu1905 dans le forum Bases de données
    Réponses: 9
    Dernier message: 23/03/2005, 16h14
  2. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29
  3. Réponses: 2
    Dernier message: 26/07/2004, 13h34
  4. [GTK]installer Dev-C++ avec gtk 1.2 ...
    Par vbcasimir dans le forum Dev-C++
    Réponses: 2
    Dernier message: 02/02/2004, 13h34

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