1
更多信息我在一個GTK創建一個GTK :: CellRendererCombo :: TreeView控件,像這樣:GTK + CellRendererCombo通行證上signal_edited
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 Combo中選擇它由SomeClass :: onEdited方法處理時。
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;
}
}
new_text在我的CellRendererCombo(someList_str)中包含選定的字符串值。有沒有什麼辦法可以傳入int id(someList_id)?
謝謝。
謝謝@unwind。我在這裏所缺少的並不是那麼多的綁定額外已知參數,而是更多地如何綁定來自事件的額外參數。在這種情況下,lotInfoCol_str(new_text)被傳入,我寧願有lotInfoCol_id(或者兩者都更好)。我可以修改on_edited信號嗎? – Mark 2010-12-15 14:22:53