繁体   English   中英

sigc :: mem_fun并从类方法传递参数

[英]sigc::mem_fun and pass params from a class method

在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);

有什么想法吗?

您可能会喜欢使用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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM