对于复杂的布局,如果孩子有焦点,那么向父QWidget发送信号的简单方法是什么?
一个想法是以某种方式在所有子QWidgets上安装事件过滤器,但这看起来有些愚蠢。
父QWidget是不是真的只是知道其中一个孩子有焦点?
编辑: 找到了这个,也许这是唯一的方式
How to change a parent widget's background when a child widget has focus?
答案 0 :(得分:2)
您可以为所有必要的孩子安装事件过滤器(没问题),或者为每个需要监控的孩子覆盖QWidget::focusInEvent
。
答案 1 :(得分:0)
我很懒,所以这就是我所做的(不能粘贴代码,因为它不在这台机器上)。
为我的widget基类添加了一个布尔值,“listenToFocusChangesFromChildren”
然后我改变了我的基类focusInEvent以遍历所有父节点,并在任何将该布尔值设置为true的情况下调用“childGotFocus”。
懒惰但似乎非常有效。