2

次のGTK3コードがあります。

(...)
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、キーボードからの入力は表示されません。文字列を貼り付けると、正常に受け入れられます。

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

1

GtkWidgetのドキュメントによると:

[gtk_widget_grab_focus]ウィジェットがGtkWindow内部のキーボード フォーカスを持つようにします。widgetなどのフォーカス可能なウィジェットである必要がありますGtkEntry。のようなものは機能しGtkFrameません。

より正確には、GTK_CAN_FOCUSフラグが設定されている必要があります。gtk_widget_set_can_focus()そのフラグを変更するために使用 します。

ウィジェットも実現してマッピングする必要があります。これは、関連する信号によって示されます。ウィジェットを作成した直後にフォーカスを取得すると、失敗して重大な警告が発生する可能性があります

実現マップの説明については、 これらの「実現」および「マップ」ウィジェット信号を確認してください。

于 2013-03-15T22:25:00.577 に答える