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 :

Problème avec des listes déroulantes liées


Sujet :

GTK+ avec C & C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Problème avec des listes déroulantes liées
    Bonjour,

    En fait je souhaiterai savoir s'il est possible d'actualiser le contenu d'une liste déroulante en fonction de la réponse donnée dans une autre liste déroulante.

    J'ai essayer en utilisant la fonction "gtk_combo_box_get_active" mais je dois appuyer sur un bouton afin de lancer une nouvelle fonction qui actualise la 2eme liste.

    Or je souhaiterai que tout s'effectue dans une seule fonction afin de faciliter la transmission de certaines variables.

    D'avance merci pour les réponses.

    Cordialement

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 296
    Points : 4 949
    Points
    4 949
    Billets dans le blog
    5
    Par défaut
    Tu peux toujours voir du côté du signal "changed" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    The "changed" signal
     
    void                user_function                      (GtkComboBox *widget,
                                                            gpointer     user_data)      : Run Last
     
    The changed signal is emitted when the active item is changed. The can be due to the user selecting a different item from the list, or due to a call to gtk_combo_box_set_active_iter(). It will also be emitted while typing into a GtkComboBoxEntry, as well as when selecting an item from the GtkComboBoxEntry's list.
     
    widget :
    	the object which received the signal
     
    user_data :
    	user data set when the signal handler was connected.
     
    Since 2.4

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Ca marche. Merci.

    Mais je me trouve face à un nouveau problème.
    Je voudrais récupérer la valeur de la variable lu par gtk_combo_box_get_active dans la fonction où g_signal_connect a été appelé.

    Mais encore merci pour la 1ere réponse.

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 296
    Points : 4 949
    Points
    4 949
    Billets dans le blog
    5
    Par défaut
    dans le callback tu récupère le GtkComBox d'où est parti le signal. Donc gtk_combo_box_get_active(); doit fonctionner. Maintenant si c'est sur le deuxième GtkComboBox alors il faut le transmettre avec le g_signal_connect(); ( En lieu et place de la dernière variable NULL).

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Je crois que je me suis mal exprimé.
    En effet dans mon signal_connect je passe en paramètre ma combo box.
    Le gtk_combo_get_active fonctionne sans problème. Et cela me permets d'actualiser ma combo box mais je voudrais aussi récupérer la valeur de celui-ci dans la fonction où j'ai effectuer la signal_connect pour pouvoir l'utiliser à posteriori.
    J'espère avoir été un peu plus clair

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 296
    Points : 4 949
    Points
    4 949
    Billets dans le blog
    5
    Par défaut
    Je crois comprendre mais je pense que cela n'est pas réalisable. Il me semble qu'en rentrerai dans une boucle infinie ou un truc du genre. D'autres pourront infirmer ou pas. Vu que code est exécuter par interruption, à quel moment la lecture de ton combobox va-t-elle se faire?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Je vais mettre mon bout de code pour mieux comprendre
    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
     
    fct_principale
    {
    .....
    pComboBox = gtk_combo_box_new_text();
     
      /* Ajout de GtkComboBox */
      pLabel = gtk_label_new("\nSelect an option:\n");
      gtk_box_pack_start(GTK_BOX(pVBoxFrame), pLabel, TRUE, FALSE, 0);
      gtk_box_pack_start(GTK_BOX(pVBoxFrame), pComboBox, TRUE, FALSE, 0);
      ........
    g_signal_connect(G_OBJECT(pComboBox), "changed", G_CALLBACK(OnBox), (GtkWidget*) pComboBox);
    .....
     avoir ma variable => cmdId
    }
     
    void OnBox(GtkWidget *pComboBox, gpointer data)
    {
     cmdId=gtk_combo_box_get_active(GTK_COMBO_BOX(data));
    ....
    }
    Le type de ma fonction Onbox peut varier sans aucun problème.
    Est ce possible d'avoir la valeur trouver pour cmdId dans la fonction principale?
    Je pense que ca sera plus clair que tout autre explication.
    En tout cas merci beaucoup à toi pour tes réponses

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 296
    Points : 4 949
    Points
    4 949
    Billets dans le blog
    5
    Par défaut
    A première vue tu peux créer une structure avec le pointeur de ta combobox transmise au callback et un pointeur sur int.
    Dans le callback tu récupères un pointeur sur cette structure. Tu pourras initialiser le pointeur int à l'intèrieur. Tu retrouveras ainsi sa valeur dans ta fonction principale.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci de ton aide ;-)
    Bonne soirée

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    J'ai découvert un problème qui ne m'a pas sauté directement aux yeux.
    Lorsque je sélectionne une valeur dans ma 1ere combo box, la mise à jour des valeurs de la 2ème combo box se fait sans problème.
    Mais si je souhaite changer la valeur de la 1ère box, il ajoute les valeurs correspondantes aux 2eme choix après celles du 1er choix.

    Est ce que quelqu'un aurait une solution à mon problème?

    D'avance merci.

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

Discussions similaires

  1. [AJAX] avec 3 listes déroulantes liées php+xhtml+css+javascript+ajax
    Par Invité dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 27/12/2008, 15h54
  2. [Débutant] problème avec une liste déroulante
    Par stan21 dans le forum Access
    Réponses: 3
    Dernier message: 12/07/2006, 14h52
  3. Pb avec 3 listes déroulantes liées
    Par barthez dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/06/2006, 23h34
  4. Problème avec des listes et des variables
    Par Knuckles dans le forum Général Python
    Réponses: 3
    Dernier message: 09/05/2006, 18h24

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