2015-02-05 56 views
1

在gtkmm的我可以使用像這樣的構造:sigc :: mem_fun和通PARAMS

// Gtk::ImageMenuItem *iQuit; 
iQuit->signal_activate().connect (sigc::mem_fun (*this, &FormUI::on_quit_activated)); 

,但我想用一種方法來設置項目的屬性,例如:

void FormUI::SetItemProps (Gtk::ImageMenuItem *i, const Glib::ustring& _l, ?what should I put here?) 
{ 
i->set_use_stock (true); 
i->set_label (_l); 
i->signal_activate().connect (sigc::mem_fun (*this, ???)); <-- what to pass there 
} 

這樣我就可以使用這樣的構造:

SetItemProps (iQuit, "gtk-quit", &FormUI::on_quit_activated); 

任何想法嗎?

回答

2

你可能喜歡在此使用的typedef:

typedef void (FormUI::*function_ptr)(); 
void FormUI::SetItemProps (Gtk::ImageMenuItem *i, const Glib::ustring& _l, function_ptr fun) 
{ 
    i->set_use_stock (true); 
    i->set_label (_l); 
    i->signal_activate().connect (sigc::mem_fun (*this, fun)); 
} 

而且on_quit_activated方法()必須爲聲明的類型。

要調用,使用

SetItemProps (iQuit, "gtk-quit", &FormUI::on_quit_activated); 
+0

感謝的人,是幫助:) – Joel 2015-02-15 01:42:34