C 如何正确替换GtkEntry的值

C 如何正确替换GtkEntry的值,c,gtk,gtk3,C,Gtk,Gtk3,在处理程序内部clearHandle和replaceHandle我试图使用函数替换GtkEntry的值,但它对我无效 这就是我所做的 #包括 无效clearHandle(GtkEntry*e) { gtk_条目_集合_文本(e,“”); } 无效替换句柄(GtkEntry*e) { gtk输入设置文本(e,“Hello World”); } 静态无效激活(GTK应用程序*应用程序、gpointer用户数据) { GtkWidget*窗口; GtkWidget*按钮盒; GtkWidget*文本框

在处理程序内部
clearHandle
replaceHandle
我试图使用函数替换
GtkEntry
的值,但它对我无效

这就是我所做的

#包括
无效clearHandle(GtkEntry*e)
{
gtk_条目_集合_文本(e,“”);
}
无效替换句柄(GtkEntry*e)
{
gtk输入设置文本(e,“Hello World”);
}
静态无效激活(GTK应用程序*应用程序、gpointer用户数据)
{
GtkWidget*窗口;
GtkWidget*按钮盒;
GtkWidget*文本框;
GtkWidget*清除按钮;
GtkWidget*替换按钮;
GtkWidget*文本输入框;
窗口=gtk_应用程序_窗口_新(应用程序);
gtk_window_set_title(gtk_window(window),“c语言中的第一个GUI”);
gtk_窗口设置默认大小(gtk_窗口(窗口),600600);
//容器并将其添加到窗口
按钮盒=gtk按钮盒新(gtk方向垂直);
text_box=gtk_fixed_new();
//容器内的文本框
textInputBox=gtk_entry_new();
gtk输入设置文本((GtkEntry*)文本输入框,“你好,繁荣世界”);
clearButton=gtk_按钮_新_带_标签(“Clear”);
replaceButton=gtk_按钮_新_,带有_标签(“替换为hello World”);
gtk_容器添加(gtk_容器(按钮框)、文本输入框);
gtk_容器添加(gtk_容器(按钮盒),清除按钮);
gtk_容器添加(gtk_容器(按钮盒),替换按钮);
g_信号连接(clearButton,“点击”,g_回调(clearHandle),(GtkEntry*)文本输入框);
g_信号连接(替换按钮,“点击”,g_回调(替换句柄),(GtkEntry*)文本输入框);
gtk_容器添加(gtk_容器(窗口)、按钮盒);
gtk_小部件_全部显示(窗口);
}
int main(int argc,字符**argv)
{
GTK应用程序*app;
智力状态;
app=gtk_application_new(“org.yk.dev”,G_application_FLAGS_NONE);
g_信号连接(应用程序,“激活”,g_回调(激活),空);
状态=g_应用程序运行(g_应用程序(应用程序)、argc、argv);
g_object_unref(应用程序);
返回状态;
}
在运行此程序时,终端中出现以下错误

(main:14233): Gtk-CRITICAL **: 06:08:43.524: gtk_entry_set_text: assertion 'GTK_IS_ENTRY (entry)' failed

(main:14233): Gtk-CRITICAL **: 06:08:44.188: gtk_entry_set_text: assertion 'GTK_IS_ENTRY (entry)' failed


给出两个参数:首先是单击的
GtkButton*
,然后是userdata指针。您的回调需要将该
GtkButton*
作为第一个参数(即使您不使用它);目前,它尝试使用按钮作为条目,这就是为什么您会得到“'GTK_is_entry(条目)'failed”