2012-08-31 42 views
0

我有一个功能,我想隐藏按下按钮。我已经读过,我可以在一个信号上定义多个回调函数,它们将按照定义的顺序调用。所以我想在按钮按下时执行两个函数,我希望其中的一个隐藏包含此按钮的窗口。我试图这样做:Gtk隐藏窗口的回调

g_signal_connect(btn_confirm, "clicked", G_CALLBACK(function_that_does_stuff), NULL); 
g_signal_connect(btn_confirm, "clicked", G_CALLBACK(kill_window), add_conn_win); 
... 
void kill_window (GtkWidget* wdgt, GtkWidget* win) 
{ 
    gtk_widget_hide_all(win); 
} 

但这是行不通的。窗户仍在那里。有人能告诉我该怎么做吗?第一

+0

你如何显示窗口?你有没有检查你的回调是否被触发?从代码片段中,它听起来像窗口被用作对话框。如果是这样,你有没有尝试过使用GtkDialog?最后,你可能不想使用_hide_all,因为这会将窗口中的所有小部件标记为隐藏,这可能不是你想要做的 – iain

回答

1

第一件事,看文档说怎么样gtk_widget_hide_all()

gtk_widget_hide_all已经从2.24版本弃用,不应该在新编写的代码中使用

相反,你应该使用gtk_widget_hide() 。规范说它

反转gtk_widget_show()的效果,导致窗口小部件被隐藏(对用户不可见)。

作为评论说,确保您的回调被触发。然后尝试

gtk_widget_hide (win);

我认为应该做的工作,让我知道,如果有帮助!

+1

它的工作,实际上我认为它一直都可以,但回调没有被触发,原因不明。感谢您的帮助。 – psotnick