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 un treeview dans une callback


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti Avatar de yetimothee
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 260
    Points : 364
    Points
    364
    Par défaut Récupérer un treeview dans une callback
    Bonjour,
    J'aimerais récupérer un GtkTreeView dans une fonction callback. Par exemple, j'ai un bouton, et lorsque je clique sur ce bouton, j'appelle une fonction callback. Or, le prototype de la fonction est celui ci, si je ne m'abuse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void fonction (GtkWidget *p_entry, gpointer data);
    Alors, j'aimerais savoir quelle est la nature du widget "p_entry" ? Est-ce que c'est la fenêtre dans laquelle était le bouton ? Dans ce cas, y a t-il moyen d'accéder à l'arbre contenu dans dans cette fenêtre ? Si oui, comment ?

    Je précise que l'arbre a été ajouté à la fenêtre grâce à la fonction gtk_box_pack_start.

    Merci d'avance !

    EDIT : je préfèrerais ne pas avoir à passer pas le gpointer.

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Non. Le premier argument de la fonction callback est le pointeur du widget qui a appelé la fonction. Donc ici c'est le pointeur de ton bouton (ceci est vrai tant que tu n'utilises pas la fonction g_signal_connect_swapped(); qui inverse l'ordre des pointeurs dans le callback).
    Si tu désires récupérer ton treeview il faut que tu passes son pointeur au callback en le mettant en dernier argument de la fonction g_signal_connect();. Ensuite tu le récupères dans le callback par le dernier argument de celui-ci. Ici gpointer data. Tu peux caster directement ce pointeur dans le type que tu désires.

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

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Excuses je n'avais pas vu ton edit. Une autre manière est d'attacher à ton bouton une donnée via la fonction g_object_set_data();. Tu la récupères ensuite via la fonction g_object_get_data();

  4. #4
    Membre averti Avatar de yetimothee
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Merci, cela fonctionne parfaitement avec g_object_set_data !

    Edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g_object_set_data (objet, "nom", objet_à_lier);
    Qu'on récupère grâce à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objet_à_récupérer = g_object_get_data (objet, "nom");

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 02/03/2011, 10h33
  2. Récupérer des varaible dans une CALLBACK
    Par dogua dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 20/03/2009, 21h18
  3. Réponses: 1
    Dernier message: 29/08/2005, 14h04
  4. [Sécurité] comment récupérer le subject dans une page jsp?
    Par lalakers dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 13/07/2005, 11h42
  5. Réponses: 5
    Dernier message: 27/05/2005, 17h10

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