2013-03-14 3 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".

Смежные вопросы