Gtk隐藏窗口就可以了

时间:2012-08-31 18:07:34

标签: c++ 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);
}

但这不起作用。窗户还在那里。有人可以告诉我该怎么做吗?

1 个答案:

答案 0 :(得分:1)

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

  

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

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

  

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

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

gtk_widget_hide (win);

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