我有一个QStackedWidget包含各种各样QLineEdit和QComboBox儿童的几页.我想发出每当一个信号QStackedWidget不再具有任何与焦点孩子(因为孩子已经集中到开始).因此,从孩子到孩子的移动不会发出信号,但是一旦在外部选择了小部件QStackedWidget,就会发出信号.关于如何实现这一点的任何建议?我看InstallEventFilter和QSignalMapper,但那些都似乎符合我的需要.任何意见,将不胜感激.
这有点棘手。即使在从一个子项循环到另一个子项时,在一个子项失去焦点之后和另一个子项获得焦点之前,也会有一段短暂的时间,此时堆叠小部件的子项都没有焦点。虽然这种状态持续时间极短,但这是事实。
我能看到的唯一选择是决定子窗口小部件失去焦点和没有子窗口小部件获得焦点之间的时间间隔有多长,您认为足够长以声明确实没有子窗口小部件不再具有焦点。这将是一种类似于用于区分两次鼠标单击和一次双击的机制。
这可以通过使用向每个子级注册的父级中的计时器和事件过滤器来实现,该过滤器查找焦点进入和离开事件。将计时器设置为某个时间间隔(100 毫秒?),并在收到焦点移出事件时启动计时器。如果在计时器仍在运行时您在事件中获得焦点,请停止计时器。如果计时器完成,您可以触发自己的信号来指示没有子窗口小部件具有焦点。