【问题标题】:sigc::mem_fun and pass params from a class methodsigc::mem_fun 并从类方法中传递参数
【发布时间】:2015-02-05 19:36:04
【问题描述】:

在 gtkmm 中,我可以在构造函数中使用类似的东西:

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

但是我想用一个方法来设置item的属性,例如:

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

有什么想法吗?

【问题讨论】:

    标签: c++ class methods gtkmm libsigc++


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      相关资源
      最近更新 更多