在Gtkmm中,我想要一個帶有ListStore的Gtk TreeView,並且列表中的一列是ComboBoxText。但我似乎無法弄清楚如何去做。如何將組合框添加到TreeView列?
我目前擁有的模樣:
class PlayerListColumns : public Gtk::TreeModelColumnRecord
{
public:
PlayerListColumns()
{ add(name); add(team);}
TreeModelColumn<string> name;
TreeModelColumn<ComboBoxText*> team;
}
然後設置TreeView控件(該player_list_view對象)
PlayerListColumns *columns = new PlayerListColumns();
Glib::RefPtr<ListStore> refListStore = ListStore::create(*columns);
player_list_view->set_model(refListStore);
ComboBoxText *box = manage(new ComboBoxText());
box->append("Blah");
box->append("Blah");
box->append("Blah");
TreeModel::Row row = *(refListStore->append());
row[columns->name] = "My Name";
row[columns->team] = box;
列 「名稱」 顯示出來就好了,但沒有組合框時。由於列類型是錯誤的,所以我簡直有一個指向組合框的指針,但我不知道它應該如何去。我得到GTK警告:
的GLib,GObject的-WARNING **:無法設置屬性
text' of type
gchararray '從類型'值GtkComboBoxText'
這似乎表明(從一個小一點谷歌搜索),沒有非基本類型的默認渲染器。但是,如果這是問題,我一直無法找到如何設置一個例子。所有教程僅顯示具有原始數據類型的TreeView。
任何人都知道如何將一個ComboBox放到TreeView中?