使用 属性 "text" 从 GtkEntry 获取文本
Get text from GtkEntry with property "text"
我需要在单击按钮时从一堆 GtkEntries 中获取文本。我创建了一个自定义结构并将其传递给按钮的点击回调。我不想使用 gtk_entry_get_text(*entry)
因为我需要传递 GtkEntries 的结构。
typedef struct{
const gchar* id1;
const gchar* id2;
} EntryData;
static void on_click(GtkWidget *widget,
gpointer data) {
EntryData* d= (EntryData*)data;
printf ("Entry contents: %s\n", d->id1);
printf ("Entry contents: %s\n", d->id2);
}
int main(int argc,char *argv[]) {
// ....
GtkButton *button_create_hp;
GtkEntry *entry_id1;
GtkEntry *entry_id2;
gtk_init(&argc, &argv);
//...... widget and object initialization
gtk_entry_set_text(entry_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_signal_connect (button_create_hp, "clicked", G_CALLBACK(on_click),&entryData);
gtk_main();
return 0;
}
我也试过 g_object_get_property (G_OBJECT (entry_id), "text", &val);
在这两种情况下,单击按钮时未打印更改的值。
你能建议一个正确的方法来获取值并从 GtkEntries
传递它吗
从 the docs 看不是很明显,但是当您以某种方式修改文本时,它可能会移动到另一个位置,从而使先前的指针无效。
如果您不想将 GtkEntries 传递给您的结构,您可以在 EntryBuffer
发出 "deleted-text"
或 "inserted-text"
时更新指针(或连接到 GtkEntry 的 "notify::text"
)
我需要在单击按钮时从一堆 GtkEntries 中获取文本。我创建了一个自定义结构并将其传递给按钮的点击回调。我不想使用 gtk_entry_get_text(*entry)
因为我需要传递 GtkEntries 的结构。
typedef struct{
const gchar* id1;
const gchar* id2;
} EntryData;
static void on_click(GtkWidget *widget,
gpointer data) {
EntryData* d= (EntryData*)data;
printf ("Entry contents: %s\n", d->id1);
printf ("Entry contents: %s\n", d->id2);
}
int main(int argc,char *argv[]) {
// ....
GtkButton *button_create_hp;
GtkEntry *entry_id1;
GtkEntry *entry_id2;
gtk_init(&argc, &argv);
//...... widget and object initialization
gtk_entry_set_text(entry_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_signal_connect (button_create_hp, "clicked", G_CALLBACK(on_click),&entryData);
gtk_main();
return 0;
}
我也试过 g_object_get_property (G_OBJECT (entry_id), "text", &val);
在这两种情况下,单击按钮时未打印更改的值。 你能建议一个正确的方法来获取值并从 GtkEntries
传递它吗从 the docs 看不是很明显,但是当您以某种方式修改文本时,它可能会移动到另一个位置,从而使先前的指针无效。
如果您不想将 GtkEntries 传递给您的结构,您可以在 EntryBuffer
发出 "deleted-text"
或 "inserted-text"
时更新指针(或连接到 GtkEntry 的 "notify::text"
)