![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| GTK Vos questions sur GTK sous Linux |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Candidat au titre de Membre du Club
![]() Date d'inscription: décembre 2006
Âge: 25
Messages: 28
|
Bonjour
Dans mon appli, j'ai un treeview qui représente une arborescence de fichier. Afin d'acceder facilement aux infos des fichiers et pouvoir les utiliser, je voudrais associer chaque fichier avec un objet Gio::File. La manière la plus évidente me parait d'encapsuler les references aux fichiers dans le TreeStore : Code :
typedef Glib::RefPtr<Gio::File> FileRef_t; class FileTreeColumns : public Gtk::TreeModel::ColumnRecord { public: FileTreeColumns() { add(file); } Gtk::TreeModelColumn<FileRef_t> file; }; Pour l'instant à l'execution j'ai plein d'erreurs "GLib-GObject-WARNING **: unable to set property `text' of type `gchararray' from value of type `GFile'" Merci de votre aide. Si par ailleurs cette stratégie est vraiment mauvaise, merci de me le dire Rémi Dernière modification par remitbo ; 09/11/2008 à 17h52 |
|
|
|
|
|
#2 (permalink) |
|
Candidat au titre de Membre du Club
![]() Date d'inscription: décembre 2006
Âge: 25
Messages: 28
|
J'ai trouvé. C'est pas compliqué mais il fallait y penser : il faut ajouter un champs de colonne qu'on affiche pas. Le champs existe, donc on peux retrouver son objet, il n'est pas affiché, du coup Gtk ne cherche pas après et ne soulève pas d'erreur.
Voici une partie de mon code : Code :
typedef Glib::RefPtr<Gio::File > FileRef_t; class FileTreeModel : public Gtk::TreeStore { public: FileTreeModel(); virtual ~FileTreeModel(); class FileTreeColumns : public Gtk::TreeModel::ColumnRecord { public: FileTreeColumns() { add(name); add(file); } Gtk::TreeModelColumn<string> name; Gtk::TreeModelColumn<FileRef_t> file; }; const FileTreeColumns& columns() const { return _columns; } private: FileTreeColumns _columns; }; // on definit les colonne comme suit : _tree_view.append_column("Name", _model->columns().name); // ne pas appeler append_column pour _model->columns().file // on ajoute des fichiers comme suit (à partir de FileTreeModel) : FileRef_t file = Gio::File::create_for_path(pathStr); Gtk::TreeModel::Row row = *(append()); row[_columns.name] = file->get_basename(); row[_columns.file] = file; ![]() J'espère que ça peux aider certains Rémi |
|
|
|
|
![]() |
![]() |
||
[gtkmm] encapsulation d'objet dans un treeview
|
||
| Outils de la discussion | |
|
|