2013-04-25 44 views
2

我想連接信號window.signal_delete_event,但它失敗,出現以下錯誤信息:連接到基於GTK ::窗口signal_delete_event

  • 敵不過調用「(sigc :: bound_mem_functor0)(_GdkEventAny * const的&)」 OpticalInput
  • 返回語句的值,在函數返回 '無效'[-fpermissive]
  • 空值不被忽略,因爲它應該是

這是行代碼導致錯誤:

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

尖成員函數是這個:

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

關於如何解決此問題的任何想法?

回答

4

您的方法必須匹配信號的簽名。在爲signal_delete_event() gtkmm的文檔,以下原型給出:

bool on_my_delete_event(GdkEventAny* event) 

使用您的命名,該方法必須被定義如下:

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

返回值是用來指示是否你已完全處理該事件。如果您返回true,則此事件的其他處理程序將不會看到它。