C语言中用gtk输入文本
Entering text with gtk in C language
为什么我创建的对话中出现 Your Aggregate is(null):
。
我用了gtk_entry_get_text
,谁能指出我这里做错了什么。
请尽快,因为我很快就要提交我的项目了。
任何好的教程 link 也将不胜感激。
return由 gtk_entry_get_text()
编辑的指针是临时的,不属于您,而属于 GtkEntry 本身。到调用 show_info()
时,该指针将变为无效。如果您以任何方式更改 GtkEntry
,该指针也可能无效。最后,如果 GtkEntry 从未触发其 activate
信号(通过按 Enter),则全局变量仍将为 NULL。
通过不保存 gtk_entry_get_text()
中的 return 来解决此问题。相反,直接从 show_info()
中调用它。如何给 show_info()
GtkEntry 传递给 gtk_entry_get_text()
.
取决于你
另一种方法是在enter_callback()
中使用g_strdup()
复制输入文本。完成后,您需要手动 g_free()
字符串。您仍然必须确保 enter_callback()
被调用。
我通过将 entry1、entry2 和 entry3 作为全局变量解决了这个问题。
为什么我创建的对话中出现 Your Aggregate is(null):
。
我用了gtk_entry_get_text
,谁能指出我这里做错了什么。
请尽快,因为我很快就要提交我的项目了。 任何好的教程 link 也将不胜感激。
return由 gtk_entry_get_text()
编辑的指针是临时的,不属于您,而属于 GtkEntry 本身。到调用 show_info()
时,该指针将变为无效。如果您以任何方式更改 GtkEntry
,该指针也可能无效。最后,如果 GtkEntry 从未触发其 activate
信号(通过按 Enter),则全局变量仍将为 NULL。
通过不保存 gtk_entry_get_text()
中的 return 来解决此问题。相反,直接从 show_info()
中调用它。如何给 show_info()
GtkEntry 传递给 gtk_entry_get_text()
.
另一种方法是在enter_callback()
中使用g_strdup()
复制输入文本。完成后,您需要手动 g_free()
字符串。您仍然必须确保 enter_callback()
被调用。
我通过将 entry1、entry2 和 entry3 作为全局变量解决了这个问题。