模型

可以像TreeView一样定义和填充组合框的模型。你可以与如下所示的一样派生具有一个整数行和一个文本行的组合框类:

class ModelColumns : public Gtk::TreeModel::ColumnRecord
{
public:
  ModelColumns()
  { add(m_col_id); add(m_col_name); }

  Gtk::TreeModelColumn<int> m_col_id;
  Gtk::TreeModelColumn<Glib::ustring> m_col_name;
};

ModelColumns m_columns;

将行追加到此模型中后,你应该使用set_model()方法将模型提供给ComboBox。然后使用pack_start()pack_end()方法指定哪个行将要被组合框显示。和树状视图一样,你可以通过将TreeModelColumn传递给pack方法来使用默认的单元格渲染器,也可以实例化一个特定的CellRenderer并使用add_attribute()set_cell_data_func()指定具体映射到哪行。请注意这些方法在CellLayout基类中。