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

时间:2013-10-04 11:56:14

标签: c++ qt user-interface focus

对于复杂的布局,如果孩子有焦点,那么向父QWidget发送信号的简单方法是什么?

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

父QWidget是不是真的只是知道其中一个孩子有焦点?

编辑: 找到了这个,也许这是唯一的方式

How to change a parent widget's background when a child widget has focus?

2 个答案:

答案 0 :(得分:2)

您可以为所有必要的孩子安装事件过滤器(没问题),或者为每个需要监控的孩子覆盖QWidget::focusInEvent

答案 1 :(得分:0)

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

为我的widget基类添加了一个布尔值,“listenToFocusChangesFromChildren”

然后我改变了我的基类focusInEvent以遍历所有父节点,并在任何将该布尔值设置为true的情况下调用“childGotFocus”。

懒惰但似乎非常有效。