gtk_entry_get_text出现段错误
小弟初学gtk,我用的是 gtk+-2.0
对一个entry控件键入 enter时相应回调函数
回调函数如下
133 /* when you press the Enter key int entry_localwd call this function*/
134 void* response_entry_enter(GtkWidget *widget, GdkEvent *event, gpointer data)
135 {
136 GtkEntry * value = data;
137 char path[100];
138 strcpy(path,gtk_entry_get_text(GTK_ENTRY(widget)));
139 printf("%s\n",path);
}
信号关联函数如下
g_signal_connect(entry_localwd,"activate",G_CALLBACK(response_entry_enter),&entry_localwd);
当我将 138行的 widget 改为 value(即entry_localwd)时出现段错误,但是用widget,未出现段错误
其实这是测试代码,原来给 g_signal_connect()传的是一个结构体变量,entry_localwd也是成员变量之一,
在赋值是 也是在gtk_entry_get_text(GTK_ENTRY(data->entry))出现段错误,其他的成员变量赋值未出现问题,不知到为什么?
懂得麻烦讲解一下,在此谢过!
gtk
signal
callback
------解决方案--------------------请楼主贴出代码
------解决方案--------------------你那个是要传自己吗? 没有必要吧,回调函数response_entry_enter中第一个参数就是信号源的控件了,有它不就够了吗?
可以gdb里面看下,传过去的最后一个参数可能解析有问题,设个断点看下它的值。
g_signal_connect(entry_localwd,"activate",G_CALLBACK(response_entry_enter),&entry_localwd);
是否要改为: g_signal_connect((G_OBJECT)entry_localwd,"activate",G_CALLBACK(response_entry_enter),(gpointer)entry_localwd);
最好是把你的问题整理出一个简单的可复现的demo程序,放下源码和编译参数之类的。