1

我有一个带有两个元素的 GTK 窗口,一个用作搜索输入的条目和一个显示搜索结果的列表框。当 ListBox 具有焦点时(例如,用户使用箭头键导航它)我想将他们所做的任何字符键按下指向搜索输入条目而不是 ListBox。

对于重定向某些 GTK 事件的目标或任何其他处理这种情况的方法,我将不胜感激。我正在使用 gtk-rs,但我想任何语言的 GTK 解决方案都足以让我继续下去。

谢谢!

4

2 回答 2

0

哦,这是一个棘手的问题。您可以修改小部件事件掩码并将事件处理程序添加到小部件,请参阅https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-add-events

不过,自定义事件处理程序可能是一个陡峭的学习曲线。

于 2019-04-05T14:07:32.880 回答
0

这正是我在这里所做的:https ://github.com/jimmykarily/fuzzygui/blob/7ddb72ad712e7afa5bfcb2d06b435b74caeb8140/main.go#L88

(实际上整个 gui 正是您所描述的,如果您实际上是在尝试实现相同的工具,我不会感到惊讶 :D)。

您所要做的基本上就是连接到主窗口上的事件,并确保您“抓住焦点”在应该处理该事件的元素上。如果它是箭头键,则将焦点放在列表框上。如果是其他任何东西,您可以将注意力集中在条目上。我用于GrabFocusWithoutSelecting条目是因为GrabFocus在调用条目时删除了条目中的文本。

我也以不同的方式处理“返回”和“逃生”,您可能会发现这也很有用。

于 2020-10-27T19:47:57.173 回答