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 :

[GtkTreeView] Récuperer le nom de l'élement selectionné


Sujet :

GTK+ avec C & C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Points : 9
    Points
    9
    Par défaut [GtkTreeView] Récuperer le nom de l'élement selectionné
    Bonjour,

    Je dois développer un client mail en langage C avec la bibliothèque GTK, et je rencontre des difficultés pour récupérer le nom de l'élément sélectionné d'une treeview.

    Donc je fais un gtk_tree_view_get_selection() et j'y associe une fonction avec g_signal_connect, puis j'aimerais ensuite recuperer le nom de l'element selectionné a l'aide de la fonction appellé.

    Je débute en C donc je suis quand meme assez content d'etre arrivé jusque la, mais je manque un peu d'expérience...

    Je vous remercie de m'aider.

  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 : 46
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Salut et bienvenue sur les forums de developpez.com


    Un exemple que j'ai fait pour quelqu'un y'a 2 jours sur un problème similaire:
    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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    #include <gtk/gtk.h>
    #include <glib/gprintf.h>
     
     
    static void cb_row (GtkTreeView *p_treeview,
                        GtkTreePath * p_path,
                        GtkTreeViewColumn * p_column,
                        gpointer p_data)
    {
       gchar * p_nom;
       gchar * p_prenom;
       gint id = -1;
       GtkTreeIter iter;
       GtkTreeModel * p_model = (GtkTreeModel *) p_data;
     
     
       if (gtk_tree_model_get_iter (p_model, & iter, p_path))
       {
          gtk_tree_model_get (
             p_model, & iter,
             0, & p_nom,
             1, & p_prenom,
             2, & id,
             -1
          );
     
          g_printf ("%s %s : %d\n", p_nom, p_prenom, id);
       }
    }
     
     
    int main (int argc, char ** argv)
    {
       GtkWidget * p_win = NULL;
       GtkWidget * p_vbox = NULL;
       GtkListStore * p_model = NULL;
       GtkTreeViewColumn * p_col = NULL;
       GtkWidget * p_treeview = NULL;
       GtkCellRenderer * p_renderer = NULL;
       GtkTreeIter iter;
       gint i = 0;
     
     
       gtk_init (& argc, & argv);
     
     
       p_win = gtk_window_new        (GTK_WINDOW_TOPLEVEL);
       gtk_window_set_title          (GTK_WINDOW (p_win), "GtkTreeView...");
       gtk_window_set_position       (GTK_WINDOW (p_win), GTK_WIN_POS_CENTER);
       gtk_window_set_default_size   (GTK_WINDOW (p_win), 320, 200);
       g_signal_connect              (p_win, "destroy", gtk_main_quit, NULL);
       p_vbox = gtk_vbox_new         (FALSE, 0);
       gtk_container_add             (GTK_CONTAINER (p_win), p_vbox);
     
     
       p_model = gtk_list_store_new (
          3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT
       );
       p_treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (p_model));
       p_col = gtk_tree_view_column_new ();
       gtk_box_pack_start (GTK_BOX (p_vbox), p_treeview, TRUE, TRUE, 0);
     
       for (i = 0; i < 3; i++)
       {
          p_renderer = gtk_cell_renderer_text_new ();
     
          gtk_tree_view_column_pack_start (
             p_col,
             p_renderer,
             FALSE);
     
          gtk_tree_view_column_set_attributes (
             p_col,
             p_renderer,
             "text",
             i,
             NULL);
       }
     
       gtk_tree_view_append_column (GTK_TREE_VIEW (p_treeview), p_col);
     
     
       gtk_list_store_append (p_model, & iter);
       gtk_list_store_set (
          p_model, & iter,
          0, "Dupont", 1, "Marcel", 2, 154567,
          -1
       );
       gtk_list_store_append (p_model, & iter);
       gtk_list_store_set (
          p_model, & iter,
          0, "Duchnoc", 1, "Henri", 2, 487845,
          -1
       );
       gtk_list_store_append (p_model, & iter);
       gtk_list_store_set (
          p_model, & iter,
          0, "Machin", 1, "Truc", 2, 444445,
          -1
       );
     
       g_signal_connect (
          G_OBJECT (p_treeview), "row-activated",
          G_CALLBACK (cb_row), (gpointer) p_model
       );
     
     
       gtk_widget_show_all (p_win);
       gtk_main ();
     
     
       return 0;
    }
    Il va de soit qu'il ne faut pas bêtement recopier l'exemple et l'adapter mais tu dois l'étudier point par point étant donné que tu débute et par ailleurs, il n'est jamais trop conseillé pour des novices en C d'apprendre directement des bibliothèques additionnelles mais plutôt d'approfondire les connaissances en C Standard... problème dans l'enseignement apparement
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Merci pour ta reponse rapide, je vais etudier ça.

    En passant, oui, c'est meme un tres gros probleme de nous faire utiliser des bibliotheques tel que GTK a des gens qui ne font que débuter (pour ma part j'ai commencer le C tres lentement au mois de février), on a d'ailleurs beaucoup râler avant de s'y mettre.

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

Discussions similaires

  1. [VB.Net 2.0] Comment récuperer le nom d'un objet pour le modifier ?
    Par pti_pierrot dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/07/2006, 13h46
  2. [VBA-E]Récuperer le nom d'une feuille sans le N°
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/04/2006, 11h33
  3. [VB]récuperer le nom d'un routeur
    Par Mut dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/02/2006, 13h33
  4. Récuperer le nom du proprietaire d'un processus
    Par leyee dans le forum Threads & Processus
    Réponses: 4
    Dernier message: 08/11/2005, 02h26
  5. [ADSI] récuperer un nom de domaine
    Par Overflow64 dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 04/06/2005, 22h16

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