0

ボタンを押すと隠したい機能があります。シグナルに複数のコールバックを定義でき、それらは定義されたのと同じ順序で呼び出されることを読みました。そこで、ボタンを押すだけで2つの機能を実行し、そのうちの1つでこのボタンを含むウィンドウを非表示にしたいと思いました。私はこのようにそれをやろうとしました:

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 に答える