C++ GTK+CellRenderCombo传递有关信号的更多信息\u已编辑

C++ GTK+CellRenderCombo传递有关信号的更多信息\u已编辑,c++,gtk,gtkmm,C++,Gtk,Gtkmm,我在Gtk::TreeView中创建了一个Gtk::CellRenderCombo,如下所示: Gtk::CellRendererCombo *someRenderer = manage(new Gtk::CellRendererCombo()); someRenderer->property_has_entry() = false; someRenderer->property_text_column() = 0; someRenderer->property_editabl

我在Gtk::TreeView中创建了一个Gtk::CellRenderCombo,如下所示:

Gtk::CellRendererCombo *someRenderer = manage(new Gtk::CellRendererCombo());
someRenderer->property_has_entry() = false;
someRenderer->property_text_column() = 0;
someRenderer->property_editable() = true;
someRenderer->property_model() = m_someListStore;
someRenderer->signal_edited().connect(sigc::mem_fun(*this, &SomeClass::onEdited));
col = manage(new Gtk::TreeViewColumn(_("Some Column Name"),*someRenderer));
其中,相应的列表存储m_someListStore创建为:

{
Gtk::TreeModel::ColumnRecord colRec;
colRec.add(someList_str);
colRec.add(someList_id);
m_someListStore = Gtk::ListStore::create(colRec);
}

Gtk::TreeModel::iterator itr1 = m_someListStore->append();
(*itr1)[lotInfoCol_id] = 0;
(*itr1)[lotInfoCol_str] = "Zero";
itr1 = m_someListStore->append();
(*itr1)[lotInfoCol_id] = 1;
(*itr1)[lotInfoCol_str] = "One";
etc...
我的问题是,当我从CellRenderer组合中选择时,它将由SomeClass::OneEded方法处理

void SomeClass::onEdited(const Glib::ustring& path_string, const Glib::ustring& new_text)
{
  Gtk::TreePath path(path_string);
  Gtk::TreeModel::iterator iter = m_TreeViewListStore->get_iter(path);
  if(iter)
  {
    Gtk::TreeRow row = *iter;
    row[m_TreeViewModel.some_column] = new_text;
  }
}
新文本包含我的CellRenderCombo someList\u str中所选的字符串值。是否有任何方法也可以传递int id someList\u id

谢谢。

gtkmm文档介绍了如何使用sigc::bind模板类将额外参数传递给信号处理程序


gtkmm开发人员似乎或多或少不喜欢它,但对我来说,这是一个公开的消息:使用普通的旧C语言编写GTK+的背景相当长,感觉很自然。并非所有内容都是子类小部件。

谢谢@unwind。这里我缺少的不是绑定额外的已知参数,而是如何绑定事件中的额外参数。在本例中,传递的是lotInfoCol_str new_text,我更希望使用lotInfoCol_id,或者两者都更好。我可以修改on_编辑的信号吗?