【发布时间】:2010-04-13 18:57:11
【问题描述】:
GTK+ 中的“focus”和“focus-in(out)-event”信号有什么区别?哪个是冷杉发出的?它们与键盘(TAB)和鼠标点击有什么关系。它们相互依赖吗?
我问这个是因为我想在顶级窗口中跟踪当前聚焦的小部件,并且我不想在需要时测试每个小部件的 HAS_FOCUS 标志。我感兴趣的小部件位于其他容器、盒子等深处。在这种情况下,保持和更新焦点小部件指针的最佳方法是什么?
【问题讨论】:
GTK+ 中的“focus”和“focus-in(out)-event”信号有什么区别?哪个是冷杉发出的?它们与键盘(TAB)和鼠标点击有什么关系。它们相互依赖吗?
我问这个是因为我想在顶级窗口中跟踪当前聚焦的小部件,并且我不想在需要时测试每个小部件的 HAS_FOCUS 标志。我感兴趣的小部件位于其他容器、盒子等深处。在这种情况下,保持和更新焦点小部件指针的最佳方法是什么?
【问题讨论】:
gtk_window_get_focus() 满足您的需求。
focus-{in,out}-event 是由 XWindow 系统(或任何其他系统)生成的低级事件,并且首先生成。 focus 是由 GTK+ 自己生成的:您可以将其视为更高级别的 focus-in-event。这也意味着,至少在理论上,您可以拥有一个无窗口小部件(即没有关联 GdkWindow 的小部件),它会发出 focus 但不会发出 focus-in-event。
【讨论】: