【发布时间】:2011-12-30 06:48:59
【问题描述】:
在 Gtkmm 中,我想要一个带有 ListStore 的 Gtk TreeView,并且列表中的一列是 ComboBoxText。但我似乎无法弄清楚该怎么做。
我现在的样子:
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 **:无法从 `GtkComboBoxText' 类型的值设置属性
text' of typegchararray'
这似乎表明(来自一小部分谷歌搜索)非基本类型没有默认渲染器。但是,如果这是问题所在,我还没有找到任何有关如何设置的示例。所有的教程都只展示了原始数据类型的 TreeView。
有人知道如何将 ComboBox 放入 TreeView 中吗?
【问题讨论】: