我有一个我想按下按钮时隐藏的功能。我已经读过,我可以在一个信号上定义多个回调,它们将按照定义的顺序被调用。所以我想按下按钮执行两个功能,我希望其中一个隐藏包含此按钮的窗口。我试着这样做:
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 :(得分:1)
首先,请参阅文档中有关gtk_widget_hide_all()的内容:
gtk_widget_hide_all自版本2.24起已被弃用,不应在新编写的代码中使用
相反,您应该使用gtk_widget_hide ()。规范说它
反转gtk_widget_show()的效果,导致隐藏窗口小部件(对用户不可见)。
正如评论所说,请确保您的回调被触发。然后尝试
gtk_widget_hide (win);
我认为应该做的工作,让我知道它是否有帮助!