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+ Discussion :

[ GTKMM ] effacer les lignes dans un TREEVIEW


Sujet :

GTK+

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    dessinateur projeteur VRD
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : dessinateur projeteur VRD
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 30
    Points
    30
    Par défaut [ GTKMM ] effacer les lignes dans un TREEVIEW
    Débutant en C++ et GTKMM

    Existe t'il une fonction pour effacer toutes les lignes dans un TREEVIEW ?

    Doit-on faire un test avant d'effacer la liste ?

    J'ai utilisé la fonction
    clear ()

    mais j'ai une erreur de segmentation...

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Points : 53
    Points
    53
    Par défaut
    Essai de voir ce qui ne va pas avec gdb et dit nous ce qu'il en ressort...

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    dessinateur projeteur VRD
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : dessinateur projeteur VRD
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    Voici mon code :
    mon fichier

    Classe_fenetre.hpp

    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
     
    #ifndef DEF_CLASSE_FENETRE
    #define DEF_CLASSE_FENETRE
    #include <gtkmm/main.h>
    #include <gtkmm/window.h>
    #include <gtkmm/label.h>
    #include <gtkmm/table.h>
    #include <gtkmm/alignment.h>
    #include <gtkmm/spinbutton.h>
    #include <gtkmm/adjustment.h>
    #include <gtkmm/entry.h>
    #include <gtkmm/treeview.h>
    #include <gtkmm/liststore.h>
    #include <gtkmm/scrolledwindow.h>
    #include <glibmm/ustring.h>
    class Fenetre : public Gtk::Window 
    {
       public:
          Fenetre();
          virtual ~Fenetre();
          void Calculer_pret();
       /* Modele de colonne pour le tableau d'amortissement */
          class Agencement : public Gtk::TreeModel::ColumnRecord
          {
             public:
    	    Agencement()
    	    {
    	       add(m_col_echeance);
    	       add(m_col_mensualite);
    	       add(m_col_interet);
    	       add(m_col_restant);
    	       add(m_col_rembourser);
    	    }
    	    Gtk::TreeModelColumn<unsigned int> m_col_echeance;
    	    Gtk::TreeModelColumn<float> m_col_mensualite;
    	    Gtk::TreeModelColumn<unsigned int> m_col_interet;
    	    Gtk::TreeModelColumn<unsigned int> m_col_restant;
    	    Gtk::TreeModelColumn<unsigned int> m_col_rembourser;
          };
       private:
          Gtk::Table Tableau;
          /* Widgets pour la partie vos revenus */ 
          Gtk::Label Titre_1;
          Gtk::Label Etiquette_1;
          Gtk::Label Etiquette_2;
          Gtk::Adjustment Tolerance_sal_1;
          Gtk::Adjustment Tolerance_sal_2;
          Gtk::SpinButton Btn_compteur_sal_1;
          Gtk::SpinButton Btn_compteur_sal_2;
          Gtk::Label Etiquette_euro_1;
          Gtk::Label Etiquette_euro_2;
          /* Widgets pour la partie votre pret */ 
          Gtk::Label Titre_2;
          Gtk::Label Etiquette_3;
          Gtk::Label Etiquette_4;
          Gtk::Label Etiquette_5;
          Gtk::Adjustment Tolerance_pourcent;
          Gtk::Adjustment Tolerance_duree;
          Gtk::Adjustment Tolerance_montant;
          Gtk::SpinButton Btn_compteur_pourcent;
          Gtk::SpinButton Btn_compteur_duree;
          Gtk::SpinButton Btn_compteur_montant;
          Gtk::Label Etiquette_pourcent;
          Gtk::Label Etiquette_duree;
          Gtk::Label Etiquette_montant;
          /* Widgets pour la partie résultats */ 
          Gtk::Label Titre_3;
          Gtk::Label Etiquette_6;
          Gtk::Label Etiquette_7;
          Gtk::Label Etiquette_8;
          Gtk::Label Etiquette_9;
          Gtk::Adjustment Tolerance_mensualite;
          Gtk::SpinButton Btn_compteur_mensualite;
          Gtk::Entry Resultat_mensualite_maxi;
          Gtk::Entry Resultat_capacite_emprunt;
          Gtk::Entry Resultat_interet;
          Gtk::Label Etiquette_mensualite;
          Gtk::Label Etiquette_mensualite_maxi;
          Gtk::Label Etiquette_capacite_emprunt;
          Gtk::Label Etiquette_interet;
          /* Widgets pour la partie tableau d'amortissement */ 
          Gtk::ScrolledWindow barredefilement;
          Agencement Tableau_amortissement;
          Gtk::TreeView m_Tableau_pret;
          Glib::RefPtr<Gtk::ListStore> m_refTreeModel;
          /* Widgets pour la partie des boutons */ 
          Gtk::Button Btn_calculer;
          Gtk::Button Btn_quit;
    };
    #endif
    Mon fichier

    Classe_fenetre.cpp
    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
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    # include <iostream>
    # include "Classe_fenetre.hpp"
    # include "Classe_formule_credit.cpp"
    Fenetre::Fenetre () :
    Tableau (10,15,false),
    /* Données des widgets de la partie Vos revenus */
    Titre_1 ("",Gtk::ALIGN_LEFT),
    Etiquette_1 ("Paie du 1er emprunteur :", Gtk::ALIGN_RIGHT, Gtk::ALIGN_TOP),
    Etiquette_2 ("Paie du 2ème emprunteur :", Gtk::ALIGN_RIGHT, Gtk::ALIGN_TOP),
    Tolerance_sal_1 (1000,0,99999,10),
    Tolerance_sal_2 (1000,0,99999,10),
    Btn_compteur_sal_1 (Tolerance_sal_1),
    Btn_compteur_sal_2 (Tolerance_sal_2),
    Etiquette_euro_1 ("€",Gtk::ALIGN_LEFT),
    Etiquette_euro_2 ("€",Gtk::ALIGN_LEFT),
    /* Données des widgets de la partie Votre pret */
    Titre_2 ("",Gtk::ALIGN_LEFT),
    Etiquette_3 ("Taux d'intérêt :", Gtk::ALIGN_RIGHT, Gtk::ALIGN_TOP),
    Etiquette_4 ("Durée de l'emprunt:", Gtk::ALIGN_RIGHT, Gtk::ALIGN_TOP),
    Etiquette_5 ("Somme empruntée :", Gtk::ALIGN_RIGHT, Gtk::ALIGN_TOP),
    Tolerance_pourcent (3.50,1.00,20.00,0.01),
    Tolerance_duree (10,1,30,1),
    Tolerance_montant (100000,1000,9999999,100),
    Btn_compteur_pourcent (Tolerance_pourcent,1.0,2),
    Btn_compteur_duree (Tolerance_duree),
    Btn_compteur_montant (Tolerance_montant),
    Etiquette_pourcent ("%",Gtk::ALIGN_LEFT),
    Etiquette_duree ("ans",Gtk::ALIGN_LEFT),
    Etiquette_montant ("€",Gtk::ALIGN_LEFT),
    /* Données des widgets de la partie résultats */
    Titre_3 ("",Gtk::ALIGN_LEFT),
    Etiquette_6 ("Votre mensualité est de :", Gtk::ALIGN_RIGHT, Gtk::ALIGN_TOP),
    Etiquette_7 ("Votre mensualité maxi est de :", Gtk::ALIGN_RIGHT, Gtk::ALIGN_TOP),
    Etiquette_8 ("Votre capacité d'emprunt est de :", Gtk::ALIGN_RIGHT, Gtk::ALIGN_TOP),
    Etiquette_9 ("Les intérêts total pour votre prêt :", Gtk::ALIGN_RIGHT, Gtk::ALIGN_TOP),
    Tolerance_mensualite (0,0,20000.00,1),
    Btn_compteur_mensualite (Tolerance_mensualite,1.0,2),
    Etiquette_mensualite ("€",Gtk::ALIGN_LEFT),
    Etiquette_mensualite_maxi ("€",Gtk::ALIGN_LEFT),
    Etiquette_capacite_emprunt ("€",Gtk::ALIGN_LEFT),
    Etiquette_interet ("€",Gtk::ALIGN_LEFT),
    /* Les boutons */
    Btn_calculer ("Calculer"),
    Btn_quit ("Quitter")
    {
       /* Configuration de la fenetre */
       resize(700, 500);
       set_title("Calcul de votre prêt immobilier");
       set_border_width(10);
       set_position(Gtk::WIN_POS_CENTER);
       add(Tableau);
       /* Les éléments pour la rubrique "Vos revenus" */
          /* 1er ligne */
             Tableau.attach(Titre_1,0,3,0,1,Gtk::FILL, Gtk::FILL,5,5);
       	 Titre_1.set_markup("<u>Vos revenus</u>");
          /* 2ème ligne */
             /* information par bulle */
             Btn_compteur_sal_1.set_tooltip_text("--- Champs de saisie obligatoire ---\nEntrer directement la paie du premier emprunteur");  
    	 Tableau.attach(Etiquette_1,0,1,1,2,Gtk::FILL, Gtk::FILL,5,5);
             Tableau.attach(Btn_compteur_sal_1,1,2,1,2,Gtk::FILL, Gtk::FILL,0,0);
    	 Tableau.attach(Etiquette_euro_1,2,3,1,2,Gtk::FILL, Gtk::FILL,5,5);
          /* 3ème ligne */
             Tableau.attach(Etiquette_2,0,1,2,3,Gtk::FILL, Gtk::FILL,5,5);
    	 Tableau.attach(Btn_compteur_sal_2,1,2,2,3,Gtk::FILL, Gtk::FILL,0,0);
    	 Tableau.attach(Etiquette_euro_2,2,3,2,3,Gtk::FILL, Gtk::FILL,5,5);
       /* Les éléments pour la rubrique "Le prêt" */
          /* 1er ligne */
       	 Tableau.attach(Titre_2,0,3,3,4,Gtk::FILL, Gtk::FILL,5,5);
    	 Titre_2.set_markup("<u>Votre Prêt</u>");
          /* 2ème ligne */
      	 Tableau.attach(Etiquette_3,0,1,4,5,Gtk::FILL, Gtk::FILL,5,5);
    	 Tableau.attach(Btn_compteur_pourcent,1,2,4,5,Gtk::FILL, Gtk::FILL,0,0);
    	 Tableau.attach(Etiquette_pourcent,2,3,4,5,Gtk::FILL, Gtk::FILL,5,5);
          /* 3ème ligne */
    	 Tableau.attach(Etiquette_4,0,1,5,6,Gtk::FILL, Gtk::FILL,5,5);
    	 Tableau.attach(Btn_compteur_duree,1,2,5,6,Gtk::FILL, Gtk::FILL,0,0);
    	 Tableau.attach(Etiquette_duree,2,3,5,6,Gtk::FILL, Gtk::FILL,5,5);
          /* 4ème ligne */
    	 Tableau.attach(Etiquette_5,0,1,6,7,Gtk::FILL, Gtk::FILL,5,5);
    	 Tableau.attach(Btn_compteur_montant,1,2,6,7,Gtk::FILL, Gtk::FILL,0,0);
    	 Tableau.attach(Etiquette_montant,2,3,6,7,Gtk::FILL, Gtk::FILL,5,5);
       /* Les éléments pour les résultats */
          /* 1er ligne */
             Tableau.attach(Titre_3,5,10,0,1,Gtk::FILL, Gtk::FILL,5,5);
       	 Titre_3.set_markup("<u>Résultats</u>");
          /* 2ème ligne */
             Tableau.attach(Etiquette_6,5,8,1,2,Gtk::FILL, Gtk::FILL,5,5);
             Tableau.attach(Btn_compteur_mensualite,8,9,1,2,Gtk::FILL, Gtk::FILL,5,5);
             Tableau.attach(Etiquette_mensualite,9,10,1,2,Gtk::FILL, Gtk::FILL,5,5);
          /* 3ème ligne */
             Tableau.attach(Etiquette_7,5,8,2,3,Gtk::FILL, Gtk::FILL,5,5);
             Tableau.attach(Resultat_mensualite_maxi,8,9,2,3,Gtk::FILL, Gtk::FILL,5,5);
             Tableau.attach(Etiquette_mensualite_maxi,9,10,2,3,Gtk::FILL, Gtk::FILL,5,5);
          /* 4ème ligne */
             Tableau.attach(Etiquette_8,5,8,3,4,Gtk::FILL, Gtk::FILL,5,5);
             Tableau.attach(Resultat_capacite_emprunt,8,9,3,4,Gtk::FILL, Gtk::FILL,5,5);
             Tableau.attach(Etiquette_capacite_emprunt,9,10,3,4,Gtk::FILL, Gtk::FILL,5,5);
          /* 5ème ligne */
             Tableau.attach(Etiquette_9,5,8,4,5,Gtk::FILL, Gtk::FILL,5,5);
    	 Tableau.attach(Resultat_interet,8,9,4,5,Gtk::FILL, Gtk::FILL,5,5);
             Tableau.attach(Etiquette_interet,9,10,4,5,Gtk::FILL, Gtk::FILL,5,5);
       /* Les éléments pour le tableau amortissement */
             barredefilement.add(m_Tableau_pret);
    	 barredefilement.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS);
    	 Tableau.attach(barredefilement,0,10,7,14);
             m_refTreeModel = Gtk::ListStore::create(Tableau_amortissement);
    	 m_Tableau_pret.set_model(m_refTreeModel);
    	 m_Tableau_pret.append_column(" Echéance N° ", Tableau_amortissement.m_col_echeance);
    	 m_Tableau_pret.append_column(" Mensualité ", Tableau_amortissement.m_col_mensualite);
    	 m_Tableau_pret.append_column(" Intérêt de la période ", Tableau_amortissement.m_col_interet);
    	 m_Tableau_pret.append_column(" Amortissement de la période ", Tableau_amortissement.m_col_restant);
    	 m_Tableau_pret.append_column(" Capital restant à rembourser ", Tableau_amortissement.m_col_rembourser);
       /* Les boutons */
             Tableau.attach(Btn_calculer,2,5,14,15,Gtk::FILL, Gtk::FILL,5,5);
             Tableau.attach(Btn_quit,5,6,14,15,Gtk::FILL, Gtk::FILL,5,5);
             Btn_calculer.signal_clicked().connect(sigc::mem_fun(this, &Fenetre::Calculer_pret));  
             Btn_quit.signal_clicked().connect(sigc::ptr_fun(&Gtk::Main::quit));  
       show_all();
    }
    Fenetre::~Fenetre ()
    {
    }
    void Fenetre::Calculer_pret ()
    {
       /* Récupération des valeurs */
       int Valeur_Sal_1 = Btn_compteur_sal_1.get_value_as_int();
       int Valeur_Sal_2 = Btn_compteur_sal_2.get_value_as_int();
       double recuperation = Btn_compteur_pourcent.get_value();
       float Valeur_interet = (float)recuperation;
       int Valeur_duree = Btn_compteur_duree.get_value_as_int();
       int Valeur_montant = Btn_compteur_montant.get_value_as_int();
       float Formule_Resultat_mensualite_maxi;
       int a;
       /* Calcul du pret */
       Pret p(Valeur_montant,Valeur_duree,Valeur_interet);
       /* Conversion int en ustring */
       // Glib::ustring convertir;
       // std::stringstream strstr;
       // strstr << p.Mensualite();
       // strstr >> convertir;
       Btn_compteur_mensualite.set_value(p.Mensualite());
       /* Calcul de la capacité d'emprunt */
       /* Conversion int en ustring */
       // Glib::ustring convertir_2;
       // std::stringstream strstr_2;
       // strstr_2 << p.Capacite_emprunt ();
       // strstr_2 >> convertir_2;
       // Resultat_capacite_emprunt.set_text(convertir_2);
       m_refTreeModel.clear();
       for ( a = 1; a < 10 ; a++)
       {
           /*Remplit le tableau */
          Gtk::TreeModel::Row row = *(m_refTreeModel->append());
          row[Tableau_amortissement.m_col_echeance] = a;
          row[Tableau_amortissement.m_col_mensualite] = p.Mensualite();
          row[Tableau_amortissement.m_col_interet] = p.Mensualite ()-p.Amortissement(a);
          row[Tableau_amortissement.m_col_restant] = p.Amortissement (a);
          row[Tableau_amortissement.m_col_rembourser] = Valeur_montant-p.Remboursement (a);
       }
    }

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Points : 53
    Points
    53
    Par défaut
    T'as oublié que le modèle est une classe qui modélise un pointeur vers ton modèle (TreeStore).
    Donc pourra accéder à ton modèle et pas à la classe contenante, tu doit utiliser l'opérateur "->" et non "."

    Si non tu accède à la fonction clear() de RefPtr et non de TreeStore.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    dessinateur projeteur VRD
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : dessinateur projeteur VRD
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    merci pour la remarque sur le pointeur
    j'ai trouvé la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       if ( m_refTreeModel->children() == 1 )
       {
          m_refTreeModel->clear();
       }

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

Discussions similaires

  1. Comment effacer les lignes dans la console
    Par 7rouz dans le forum Général Java
    Réponses: 4
    Dernier message: 30/12/2008, 14h17
  2. [FSO] Effacer une ligne dans un fichier
    Par Johnbob dans le forum ASP
    Réponses: 4
    Dernier message: 30/05/2007, 16h23
  3. [langage] Effacer une ligne dans un fichier
    Par sebi77 dans le forum Langage
    Réponses: 2
    Dernier message: 01/01/2005, 12h43
  4. [VBA-E] Effacer les doubles dans 1 colonne grace à une macro
    Par Stef.proxi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/08/2004, 15h44
  5. Effacer une ligne dans la table nat
    Par vbcasimir dans le forum Sécurité
    Réponses: 2
    Dernier message: 11/01/2004, 00h15

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