あなたは正しく理解しています。
これにより、次のようなトリックを実行できます。ボタン(と呼びましょう)があり、押されたときにbutton
別のウィジェット(呼びましょう)を非表示にすることになっています。textview
その後、行うことができます
g_signal_connect_swapped(button, 'clicked', G_CALLBACK(gtk_widget_hide), textview);
それを達成するために。ボタンが押されると、「クリックされた」シグナルが生成され、コールバックがtextview
最初の引数として、およびbutton
2番目の引数として呼び出されます。この場合、コールバックはgtk_widget_hide()
1つの引数のみを取るため、2番目の引数は無視されます。これは、C呼び出し規約が機能する方法だからです。
以下と同じですが、短いです。
static void
on_button_clicked(GtkButton *button, GtkWidget *textview)
{
gtk_widget_hide(textview);
}
...elsewhere...
g_signal_connect(button, 'clicked', G_CALLBACK(on_button_clicked), textview);
基本的に、インターフェイスを手動でコーディングする場合に余分な関数を作成する必要がなくなります。もちろん、私が理解したことのない、はるかに実用的な使用法があるかもしれません。