连接到Gtk :: Window signal_delete_event

时间:2013-04-25 12:14:35

标签: c++ gtk gtkmm

我想将信号连接到window.signal_delete_event,但它失败并显示以下错误消息:

  • 无法匹配调用'(sigc :: bound_mem_functor0)(_ GdkEventAny * const&)'OpticalInput
  • 带有值的return语句,函数返回'void'[-fpermissive]
  • 空值不被忽略,因为它应该是

这是导致错误的代码行:

window.signal_delete_event().connect(sigc::mem_fun(this,&GUIWindow::onExitClicked));

指向成员函数就是这个:

void GUIWindow::onExitClicked()
{
    *state = false;
    Gtk::Main::quit();
}

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:4)

您的方法必须与信号的签名相匹配。在signal_delete_event()的gtkmm文档中,给出了以下原型:

bool on_my_delete_event(GdkEventAny* event)

使用您的命名,方法必须定义如下:

bool GUIWindow::onExitClicked(GdkEventAny* event) { ... }

返回值用于指示您是否已完全处理该事件。如果返回true,则此事件的其他处理程序将无法看到它。