J'apprends à utiliser GTKmm et j'ai du mal à comprendre comment mettre une image dans une arborescence. J'ai utilisé Glade pour créer un treestore avec 3 colonnes, dont une GdkPixbuf
appelée store_pixbuf
. J'ai également créé une arborescence dans glade, avec une colonne qui a à la fois un rendu de cellule pixbuf appelé int_col_pict
et un rendu de cellule tableau de char. Dans mon code, j'ai la définition MyColumns
habituelle pour la treestore comme:GTKmm - Comment mettre un pixbuf dans un treeview
class MyModelColumns : public Gtk::TreeModel::ColumnRecord
{
public:
Gtk::TreeModelColumn<Glib::ustring> store_hostname;
Gtk::TreeModelColumn<Glib::ustring> store_intname;
Gtk::TreeModelColumn<Glib::RefPtr<Gdk::Pixbuf> > store_pict;
MyModelColumns () { add(store_hostname); add(store_intname); add(store_pict);}
};
et utilise le bit de code suivante pour le remplir.
//Get a pointer to the treestore
Glib::RefPtr<Gtk::TreeStore> treestore = Glib::RefPtr<Gtk::TreeStore>::cast_static(builder->get_object("routerTreeStore"));
//make sure the pointer isn't bad
if(treestore){
MyModelColumns columns;
//populate the first column
Gtk::TreeRow row= *(treestore->append());
row[columns.store_hostname] = router->hostname;
//populate all children
for(int i=0; i<router->interfaces.size(); i++)
{
//append child row
Gtk::TreeRow child = *(treestore->append(row.children()));
//insert data into the row
child[columns.store_pict] = Gdk::Pixbuf::create_from_file("red_dot.png");
child[columns.store_intname] = router->interfaces[i].interfaceName;
}
}//if
J'ai d'abord essayé d'utiliser une image, mais je ne pouvais pas comprendre ce que la fonction que je devais utiliser, alors j'ai essayé d'utiliser Gdk::Pixbuf::create_from_file()
(comme vous pouvez le voir ci-dessus), mais lors de l'exécution I l'erreur suivante:
Gtk-WARNING **: gtktreestore.c:765: Unable to convert from GdkPixbuf to gtkmm__GdkPixbuf
Click here pour voir à quoi il ressemble en cours d'exécution. L'image est censé aller sur la même ligne que les lignes « Fast Ethernet ... »
Est-ce que quelqu'un sait comment je peux résoudre ce problème? Est-ce que je vais complètement à tort? Merci d'avoir regardé, chaque petite aide est appréciée!
Merci pour votre réponse! J'utilise GTKmm 2.4. Je n'utilisais pas initialement une colonne séparée pour le pixbuf (j'ai vu un tutoriel GTK qui l'a fait ainsi, et j'ai juste supposé que ça marcherait), mais puisque vous l'avez fait différemment, j'ai essayé de le changer dans sa propre colonne. Cela ne fonctionne toujours pas et j'ai le même message d'erreur. – bmw357