0

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

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);
}

但这行不通。窗户还在。有人可以告诉我该怎么做吗?

4

1 回答 1

1

首先,请查看文档中有关gtk_widget_hide_all()的内容:

gtk_widget_hide_all 自 2.24 版以来已被弃用,不应在新编写的代码中使用

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

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

正如评论所说,确保您的回调被触发。然后尝试

gtk_widget_hide (win);

我认为这应该做的工作,让我知道它是否有帮助!

于 2012-09-01T14:36:07.280 回答