저는 GTKmm을 사용하는 방법을 배우고 있으며 트리 뷰에 이미지를 넣는 방법을 찾는 데 어려움을 겪고 있습니다. Glade를 사용하여 3 개의 열이있는 treestore를 만들었습니다. 그 중 하나는 이라는 GdkPixbuf
입니다. 또한 int_col_pict
이라는 pixbuf 셀 렌더러와 char 배열 셀 렌더러를 모두 가지고있는 컬럼이있는 빈틈에 트리 뷰를 만들었습니다. 내 코드에서, 나는 같은 treestore에 대한 일반적인 MyColumns
정의가 :GTKmm - treebuy에 pixbuf 넣는 방법
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);}
};
을하고 그것을 채우기 위해 다음과 같은 코드를 사용합니다.
//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
나는 처음에 재고 이미지를 사용하려고하지만 난 내가 사용했는데 어떤 기능을 알아낼 수 없게 그때는 (위에서 볼 수 있듯이)
Gdk::Pixbuf::create_from_file()
을 사용하려고하지만, 실행 시간 I에서 다음 오류가 발생합니다.
Gtk-WARNING **: gtktreestore.c:765: Unable to convert from GdkPixbuf to gtkmm__GdkPixbuf
Click here 실행중인 모양을 확인하십시오. 이미지는 "FastEthernet ..."행과 같은 줄에 표시되어야합니다.
누구든지이 문제를 해결할 수있는 방법을 알고 있습니까? 나는 완전히 잘못 될 것인가? 보고 주셔서 감사합니다, 조금씩 도움을 주시면 감사하겠습니다!
답장을 보내 주셔서 감사합니다. GTKmm 2.4를 사용하고 있습니다. 나는 처음에 pixbuf를위한 별도의 컬럼을 사용하지는 않았다. (GTK 튜토리얼을 보았는데, 그렇게했을 것이라고 생각했다.)하지만, 당신이 다르게했기 때문에 그것을 자신의 컬럼으로 변경하려고 시도했다. 여전히 작동하지 않으며 동일한 오류 메시지가 나타납니다. – bmw357