当前位置:  技术问答>linux和unix

gtk_entry_get_text出现段错误

    来源: 互联网  发布时间:2017-04-05

    本文导语:  小弟初学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...

小弟初学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("%sn",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))出现段错误,其他的成员变量赋值未出现问题,不知到为什么?
懂得麻烦讲解一下,在此谢过!

|
你那个是要传自己吗?  没有必要吧,回调函数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程序,放下源码和编译参数之类的。

|
请楼主贴出代码

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,