2013-03-14 116 views
1

我有下面这段代码GTK3GtkEntry中没有得到键盘输入

(...) 
cmd_bar = gtk_entry_new(); 
gtk_editable_set_editable(GTK_EDITABLE(cmd_bar), TRUE); 
gtk_entry_set_visibility(GTK_ENTRY(cmd_bar), TRUE); 
gtk_widget_grab_focus(GTK_WIDGET(cmd_bar)); 
gtk_grid_attach (GTK_GRID (grid), GTK_WIDGET(cmd_bar), 0, 1, 2, 1); 
gtk_widget_show(cmd_bar); 
(...) 

它显示了GtkEntry正确的,但它不显示从键盘输入任何内容。如果我粘贴一些字符串,它会被正常接受。

我该如何解决这个问题?

回答

1

按照GtkWidget documentation

[gtk_widget_grab_focus]原因控件有键盘焦点为GtkWindow这是 内。 widget必须是可聚焦的小部件,例如GtkEntry; 类似GtkFrame将无法​​正常工作。

更确切地说,它必须设置GTK_CAN_FOCUS标志。使用 gtk_widget_set_can_focus()修改该标志。

小部件也需要实现和映射。这通过 表示相关信号。 在创建 小部件后立即抓住焦点可能会失败并导致严重警告

为了解释实现地图,检查"Those “realize” & “map” widget signals"