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 :

mettre a jour GtkTreeView


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut mettre a jour GtkTreeView
    Bonjour,

    j'ai réussi à afficher l'arborescence d'un dossier à l'aide des GtkTreeView et GtkTreeStore. Tout fonctionne correctement, sauf lorsque je veux mettre a jour l'affichage. j'ai présentement une fonction qui retourne GtkTreeStore * (la fonction pourrait me retourner un GtkTreeView * très facilement). je croyais qu'en relançant la fonction et en écrasant l'ancien GtkTreeStore que je serais en mesure de modifier le GtkTreeView avec gtk_widget_show(p_TreeStore), mais sans succès. Avez vous des suggestions.

    merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Utilise gtk_tree_view_set_model pour remplacer le GtkTreeStore plutôt.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut
    Merci pour cette réponse, je crois que je m'approche de quelque chose de fonctionnel
    premièrement, j'ai défini une typedef struct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef struct
    {
      GtkWidget *pTreeView1;
      gchar *Adresse1;
      char *Add_selec_iso1;
    } ViewUpdate;
    ensuite, jai fait défini cette nouvelle structure ds mon main
    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
     
    char *Adresse;
    GtkWidget *pTreeView;
    char *Add_selec_iso;
    ViewUpdate ViewUpcd_iso;
    ViewUpdate *pViewUpcd_iso;
     
    Adresse = g_malloc(100);
    Add_selec_iso = g_malloc(100);
    sprintf(Adresse, "/tmp");
    sprintf(Add_selec_iso, "/tmp");
     
    ViewUpcd_iso.pTreeView1=pTreeView;
    ViewUpcd_iso.Adresse1=Adresse;
    ViewUpcd_iso.Add_selec_iso1=Add_selec_iso;
    pViewUpcd_iso=&ViewUpcd_iso;
    j'ai mis un bouton avec une fonction callback
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g_signal_connect(G_OBJECT(p_button), "clicked", G_CALLBACK(cb_bouton), pViewUpcd_iso);
    j'ai un problème de segmentation fault dans cette fonction. mes pointeurs ne pointe pas vers la bonne adresse?
    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 cb_ajouter_cd_iso(GtkWidget *bouton, gpointer userdata)
    {
     
    ViewUpdate *pViewUpcd_iso=userdata;
    gchar *Adresse;
    GtkWidget *pTreeView;
    char *Add_selec_iso;
     
    pTreeView=pViewUpcd_iso->pTreeView1;
    Adresse=pViewUpcd_iso->Adresse1;
    Add_selec_iso=pViewUpcd_iso->Add_selec_iso1;
     
    //    p_TreeStore=Navigateur(Adresse,Add_selec_iso);
    //gtk_tree_view_set_model(GTK_TREE_VIEW(pViewUpcd_iso->pTreeView1),GTK_TREE_MODEL(p_TreeStore)); 
    }
    pouvez-vous m'aider
    merci d'avance

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Je remplacerai tes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Adresse = g_malloc(100);
    Add_selec_iso = g_malloc(100);
    sprintf(Adresse, "/tmp");
    sprintf(Add_selec_iso, "/tmp");
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Adresse = g_strdup ("/tmp");
    Add_selec_iso = g_strdup ("/tmp");
    voire même par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ViewUpcd_iso.Adresse1 = g_strdup ("/tmp");
    Un debuggeur devrait t'aider à y voir plus clair sur ta segmentation fault. Le code que tu montres est bien entièrement dans ton main ? Ou bien le g_signal_connect est-til fait depuis une sous fonction? De même, à quel moment ta variable pTreeview est-elle initialisée ? Avant d'être stockée dans le ViewUpcd_iso ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut
    en fait, le tout est fait dans une fonction appellé par le main. rien de tout ca n'est ds le main. Est-ce que sa change quelque chose?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut
    j'ai trouver la ligne qui cause le segmentation fault. elle se trouve dans la fonction Navigateur.
    lorsque je décommante la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    p_TreeStore=Navigateur(Adresse,Add_selec_iso);
    la ligne qui cause problème est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DIR * rep = opendir (Adresse);
    donc, je supose que le pointeur ne pointe pas a la bonne place, mais je c pas ce qui cause le problème?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Par défaut
    J'ai finalement trouvé mon problème. C'était bel et bien dû au fait que ce n'était pas dans le main. puisque je déclarait toutes les variables dans une fonction, à la fin de celle-ci, les variables étaient toutes détuites. merci pour ton aide

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Ah désolé je dormais, mais c'était effectivement exactement pour ça que je posais la question. Bon, tu as réussi à t'en sortir, c'est l'essentiel

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

Discussions similaires

  1. mettre a jour sa base de donnée
    Par yamissa dans le forum Langage SQL
    Réponses: 1
    Dernier message: 25/08/2005, 14h40
  2. mettre a jour un champ caché d'une fenetre parente
    Par le-stagiaire dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2005, 14h06
  3. Mettre a jour BD avec fichier csv
    Par Looping94510 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 07/02/2005, 18h56
  4. Réponses: 5
    Dernier message: 21/12/2004, 15h17
  5. Mettre a jour les Parametres dans une requete SQL
    Par Tartar Ukid dans le forum C++Builder
    Réponses: 7
    Dernier message: 31/03/2004, 13h51

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