我有以下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
,但它没有显示键盘的任何输入。如果我粘贴一些字符串就会被正常接受。
如何解决此问题?
答案 0 :(得分:1)
[gtk_widget_grab_focus]
使小部件具有GtkWindow
的键盘焦点 内。widget
必须是可集中的小部件,例如GtkEntry
; 像GtkFrame
这样的东西不起作用。更确切地说,它必须设置
GTK_CAN_FOCUS
标志。使用gtk_widget_set_can_focus()
修改该标志。小部件也需要实现和映射。这表示为 相关信号。 创建后立即抓住焦点 小部件可能会失败并导致严重警告。
有关实现和地图的说明,请检查"Those “realize” & “map” widget signals"。
答案 1 :(得分:0)
当我将我的应用程序从 GTK3 移植到 GTK4 时,我遇到了同样的问题,同样的行为,我能够在条目中粘贴和剪切文本,但无法聚焦或使用键盘自由插入文本。
在我的 GTK3 应用程序中,我已经在我的模板中错误地将“can-focus”属性设置为“False”(使用glade),并且在移植到 GTK4 时,它们似乎导致了问题。 起初我不认为“can-focus”属性可能是问题,因为我的 GtkEntry 将它设置为 TRUE,问题是其中一个父容器的值设置为 FALSE。
希望这也是您的问题,如果不是希望它是其他人的解决方案。