sigc :: mem_fun и передача параметров из метода класса

В gtkmm я могу использовать что-то вроде этого в конструкторе:

// 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_activation () должен быть как объявленный тип.

Чтобы позвонить, используйте

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

Другие решения

Вы, вероятно, хотите использовать sigc :: bind ():
https://developer.gnome.org/gtkmm-tutorial/unstable/sec-binding-extra-arguments.html.en

0

По вопросам рекламы [email protected]