如何判断孩子QWidget是否得到了关注

How to tell if child QWidget got focus

本文关键字:是否 QWidget 孩子 何判断 判断      更新时间:2023-10-16

在复杂的布局下,如果孩子有注意力,那么向父母QWidget发出信号的简单方法是什么?

一个想法是以某种方式在所有子 QWidgets 上安装事件过滤器,但这似乎有些愚蠢。

道父母QWidget真的只是以某种方式知道其中一个孩子有重点吗?

编辑:找到了这个,也许这是唯一的办法

当子小部件具有焦点时,如何更改父小部件的背景?

您可以为所有必要的子级安装事件过滤器(是可以的),或者为需要监视的每个子级覆盖QWidget::focusInEvent

我很懒,所以这就是我所做的(无法粘贴代码,因为它不在这台机器上)。

在我的小部件基类中添加了一个布尔值,"listenToFocusChangesFromChildren"

然后,我将基类 focusInEvent 更改为遍历所有父级,并在任何将该布尔值设置为 true 的父级上调用"childGotFocus"。

懒惰,但似乎非常有效。