Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Gtk_条目为空_C_Gtk - Fatal编程技术网

C Gtk_条目为空

C Gtk_条目为空,c,gtk,C,Gtk,我使用GSlist将2个GTK_条目传递给回调函数,但在回调函数中,当我尝试从2个GTK_条目检索数据时,会显示一条错误消息,我在哪里出错?有没有其他方法可以检索用户在GTK_条目中发送给回调函数的数据?非常感谢你的帮助 在主要功能中: GtkWidget *pEntryID; GtkWidget *pEntryMDP; GSList *lLogMdp = NULL; pEntryID = gtk_entry_new(); gtk_container_add(GTK_CONTAINER(pB

我使用GSlist将2个GTK_条目传递给回调函数,但在回调函数中,当我尝试从2个GTK_条目检索数据时,会显示一条错误消息,我在哪里出错?有没有其他方法可以检索用户在GTK_条目中发送给回调函数的数据?非常感谢你的帮助

在主要功能中:

GtkWidget *pEntryID;
GtkWidget *pEntryMDP;
GSList *lLogMdp = NULL;


pEntryID = gtk_entry_new();
gtk_container_add(GTK_CONTAINER(pBoiteTotal), pEntryID);
lLogMdp = g_slist_append(lLogMdp,(GtkWidget*) pEntryID);

pEntryMDP = gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(pEntryMDP), FALSE);
gtk_container_add(GTK_CONTAINER(pBoiteTotal), pEntryMDP);
lLogMdp = g_slist_append(lLogMdp,(GtkWidget*) pEntryMDP);

g_signal_connect(G_OBJECT(pLogBtn), "clicked", G_CALLBACK(Login), lLogMdp);
void Login(GtkWidget *pLogBtn, GSList *lLogMdp)

GtkWidget *pEntryID;
GtkWidget *pEntryMDP;
const gchar *sIDEntry;
const gchar *sMDPEntry;

pEntryID = (GtkWidget*) g_slist_nth(lLogMdp, 1);
pEntryMDP = (GtkWidget*) g_slist_nth(lLogMdp, 2);
在回调函数中:

GtkWidget *pEntryID;
GtkWidget *pEntryMDP;
GSList *lLogMdp = NULL;


pEntryID = gtk_entry_new();
gtk_container_add(GTK_CONTAINER(pBoiteTotal), pEntryID);
lLogMdp = g_slist_append(lLogMdp,(GtkWidget*) pEntryID);

pEntryMDP = gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(pEntryMDP), FALSE);
gtk_container_add(GTK_CONTAINER(pBoiteTotal), pEntryMDP);
lLogMdp = g_slist_append(lLogMdp,(GtkWidget*) pEntryMDP);

g_signal_connect(G_OBJECT(pLogBtn), "clicked", G_CALLBACK(Login), lLogMdp);
void Login(GtkWidget *pLogBtn, GSList *lLogMdp)

GtkWidget *pEntryID;
GtkWidget *pEntryMDP;
const gchar *sIDEntry;
const gchar *sMDPEntry;

pEntryID = (GtkWidget*) g_slist_nth(lLogMdp, 1);
pEntryMDP = (GtkWidget*) g_slist_nth(lLogMdp, 2);

g\u slist\n()从0开始计数,因此在
g\u slist\n中(lLogMdp,2)
你给它一个超出边界的索引,所以请注意,
g\u slist\u nth()
返回的是
GSList
,而不是内容本身,所以你应该使用
g\u slist\u nth\u data()
我认为这就足够了。要传递闭包,你应该使用user\u data参数,因为这就是它的用途。使用g_object_set_data()只是一种解决方法(另外:请不要将其用作发布视频的快速方式)Nielsdg我一直认为GSlist的第一个元素是我首先创建的指针(对于我来说,lLogMdp)
g slist_nth()
从0开始计数,因此在
g_slist_nth(lLogMdp,2)
你给它一个超出边界的索引,所以请注意,
g\u slist\u nth()
返回的是
GSList
,而不是内容本身,所以你应该使用
g\u slist\u nth\u data()
我认为这就足够了。要传递闭包,你应该使用user\u data参数,因为这就是它的用途。使用g_object_set_data()只是一种解决方法(另外:请不要将其用作发布视频的快捷方式)Nielsdg我一直认为GSlist的第一个元素是我首先创建的指针(对于我来说,lLogMdp)