2011-01-31 16 views
2

にGTK +にcallbackに知らせます「セグメンテーションフォールト」何が起こっている?渡す引数/引数が私のコードであるここでC

また、コールバックは1つのユーザーデータ引数でのみ機能します。コールバック関数で何をしなければならないのですか。g_signal_connect()への呼び出しでどうすればいいですか?

答えて

4

へのポインタの前に、のポインタを初期化しようとしているという問題があります。私はそれがあなたのために働くだろうかどうかを確認し、ビットにこの問題を解決するようにコードを変更しました:

#include <gtk/gtk.h> 

void waka(GtkWidget *button, GtkWidget* entry1) 
{ 
g_print("entry: %s\n", gtk_entry_get_text(GTK_ENTRY(entry1))); 
} 

int main(int argc, char * argv[]) 
{ 
GtkWidget *window, *button, *entry, *vbox; 

gtk_init(&argc, &argv); 

window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
button = gtk_button_new_with_label("hha"); 
entry = gtk_entry_new(); 
vbox = gtk_vbox_new(FALSE, 2); 

gtk_box_pack_start_defaults(GTK_BOX(vbox),button); 
gtk_box_pack_start_defaults(GTK_BOX(vbox),entry); 

gtk_container_add(GTK_CONTAINER(window),vbox); 

g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(waka), entry); 

gtk_widget_show_all(window); 
gtk_main(); 

return 0; 
} 

希望を、これは私は、とにかくコールバックに2つのウィジェットを渡す方法を、ん、助け

+0

THXの男について構造体を使用する必要がありますか?または、私はウィジェットをグローバルに宣言する必要があります(例static var/out of function var)? – capede

+0

コールバックの2番目のパラメータを使用して、ウィジェットの配列またはウィジェットのリストまたはカスタム構造体へのポインタなど、必要なデータを渡すことができます。 –