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