gpt4 book ai didi

c - gtk 复合小部件焦点

转载 作者:行者123 更新时间:2023-12-05 01:37:47 25 4
gpt4 key购买 nike

我创建了一个复合小部件,其中 webkit_webview 小部件存储在带有 gtkvbox 基本小部件的滚动窗口中。每当包含的任何小部件具有焦点时,如何使基本 gtkvbox 小部件处于焦点?具体来说,我正在尝试添加仅在复合小部件处于焦点时才应处于事件状态的加速器。为了确定复合小部件是否在焦点上,我调用 gtk_widget_get_focused(),然后向上遍历小部件父级以填充找到基本小部件。似乎应该有更好的方法。

最佳答案

一次只有一个小部件可以拥有全局输入焦点,这是用户在屏幕上看到的焦点,也是击键出现的地方。如果 gtk_widget_has_focus(widget)返回 TRUE然后 widget具有全局输入焦点。你不能让 webview 和 vbox 同时拥有全局输入焦点。

您可以调用gtk_container_get_focus_child()在复合小部件的父级上,如果返回值是您的复合小部件,则焦点位于复合小部件内的某处。

或者您可以连接到 "focus-in-event""focus-out-event"复合小部件上的信号。我相当确定当其中一个包含的小部件获得或失去焦点时,这些会通知您。 (请记住首先在您的小部件上调用 gdk_window_set_events(widget->window, gdk_window_get_events(widget->window) | GDK_FOCUS_CHANGE_MASK),如 GTK 文档中所述。)

关于c - gtk 复合小部件焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1598631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com