C 从GtkEntry获取属性为“的文本”;“文本”;

C 从GtkEntry获取属性为“的文本”;“文本”;,c,gtk3,gnome,C,Gtk3,Gnome,当一个按钮点击时,我需要从一堆GtkEntries中获取文本。我创建一个自定义结构并将其传递给按钮的click回调。我不想使用gtk\u entry\u get\u text(*entry),因为我需要传递gtk的结构 typedef结构{ 常量gchar*id1; 常量gchar*id2; }入口数据; 单击时静态无效(GtkWidget*小部件, gpointer数据){ EntryData*d=(EntryData*)数据; printf(“条目内容:%s\n”,d->id1); prin

当一个按钮点击时,我需要从一堆GtkEntries中获取文本。我创建一个自定义结构并将其传递给按钮的click回调。我不想使用
gtk\u entry\u get\u text(*entry)
,因为我需要传递gtk的结构

typedef结构{
常量gchar*id1;
常量gchar*id2;
}入口数据;
单击时静态无效(GtkWidget*小部件,
gpointer数据){
EntryData*d=(EntryData*)数据;
printf(“条目内容:%s\n”,d->id1);
printf(“条目内容:%s\n”,d->id2);
}
int main(int argc,char*argv[]){
// ....
GTK按钮*按钮创建hp;
GtkEntry*入口标识1;
GtkEntry*入口标识2;
gtk_init(&argc,&argv);
//…小部件和对象初始化
gtk_输入_设置_文本(输入_ssd,“”);
gchar*strval1=“sl”;
gchar*strval2=“sl”;
g_object_get(g_object(entry_id1),“text”和strval1,NULL);
g_object_get(g_object(entry_id2),“text”和strval2,NULL);
EntryData EntryData={
.id1=strval1,
.id2=strval2
};
g_信号连接(按钮_创建_hp,“单击”,g_回调(单击时),&entryData);
gtk_main();
返回0;
}
我还尝试了
g_object\u get_属性(g_object(entry\u id)、“text”和&val)

在这两种情况下,单击按钮时未打印更改的值。
您能否建议一种正确的方法来获取值并从GtkEntries传递它呢?这不是很明显,但是当您以某种方式修改文本时,它可能会被移动到另一个位置,从而使以前的指针无效


如果不想将GtkEntry传递给结构,可以在
EntryBuffer
发出
“已删除文本”
“插入文本”
(或连接到GtkEntry的
“notify::text”
)时更新指针。

为什么
WIData*d=
?不应该是
EntryData*d=
?对不起,这是个错误。corrected@keinelust这段代码对我来说似乎是正确的,请深入查看//。。。。。。小部件和对象初始化部分好的,
gchar*strval1=“sl”中有一个输入错误(已重新声明),但在本例中不会编译。是的。我重命名了某个变量以明确这一点。在原始版本中,没有编译或语法错误@基内卢斯特