我想将信号连接到window.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文档中,给出了以下原型(prototype):

    bool on_my_delete_event(GdkEventAny* event)
    

    使用您的命名,方法必须定义如下:
    bool GUIWindow::onExitClicked(GdkEventAny* event) { ... }
    

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

    关于c++ - 连接到Gtk::Window signal_delete_event,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16214467/

    10-11 00:49