Bonjour,
J'aimerais utilser le TreeModelSort dans mes TreeViews pour que l'utilisateur puisse trier le contenu en cliquant sur l'entête d'une colonne.
Pour l'instant j'ai ça :
.hpp
.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 class ModelColumnsDyn : public Gtk::TreeModel::ColumnRecord { public: ModelColumnsDyn() { add(m_col_name); add(m_dyn); add(m_model_dyn); } Gtk::TreeModelColumn<Glib::ustring> m_col_name; Gtk::TreeModelColumn<Glib::ustring> m_dyn; Gtk::TreeModelColumn<Glib::ustring> m_model_dyn; }; class DynamicTreeView : public Gtk::TreeView { public: DynamicTreeView(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& /*refGlade*/); virtual ~DynamicTreeView(); void build(); protected: // Override Signal handler: // Alternatively, use signal_button_press_event().connect_notify() virtual bool on_button_press_event(GdkEventButton *event); private: ModelColumnsDyn mColumnsDyn; Glib::RefPtr<Gtk::TreeModelSort> mRefTreeModelDyn; Glib::RefPtr<Gtk::ListStore> mListModelDyn; };
(j'ai supprimé les parties de code ne concernant pas le problème).
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 AtomicModelBox::DynamicTreeView::DynamicTreeView( BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml /*refGlade*/) : Gtk::TreeView(cobject), mDynamicBox(xml) { mListModelDyn = Gtk::ListStore::create(mColumnsDyn); mRefTreeModelDyn = Gtk::TreeModelSort::create(mListModelDyn); set_model(mRefTreeModelDyn); append_column("Name", mColumnsDyn.m_col_name); append_column("Library", mColumnsDyn.m_dyn); append_column("Model", mColumnsDyn.m_model_dyn); }
Donc grâce à ce code, je peux pour l'instant faire un tri statique, en ajoutant une ligne de code pour spécifier sur quelle colonne trier le contenu, et dans quel sens. Mais je voudrais que celà se fasse lorsque l'utilisateur clique sur un en-tête de colonne (comme n'importe quel treeview ^^).
Je n'ai rien trouvé pour l'instant m'aidant à faire ça.
merci de votre aide![]()
Partager