Connect to Gtk::Window signal_delete_event

Connect to Gtk::Window signal_delete_event

本文关键字:delete event signal Window to Gtk Connect      更新时间:2023-10-16

我想连接一个信号到窗口。Signal_delete_event,但它失败,并显示以下错误消息:

  • 没有匹配调用' (sigc::bound_mem_functor0) (_GdkEventAny* const&) ' OpticalInput
  • 返回带有值的语句,在函数中返回'void' [-fpermissive]
  • 无效值没有被忽略,因为它应该是

这是导致错误的代码行:

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

指向成员函数是这样的:

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

有什么办法解决这个问题吗?

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

bool on_my_delete_event(GdkEventAny* event)

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

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

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