我正在通过重载void keyPressEvent (QKeyEvent* eventPtr)
方法来处理窗口小部件中的按键事件。按键事件仅由应用程序的一个实例处理
问题是,当我启动我的应用程序的两个实例(来自Qt Creator)时,只有其中一个实际处理按键事件。即使我专注于第二个窗口,它也不会收到事件。当我把重点放在第一个实际上确实收到事件。
当两个应用程序启动时,所有其他功能都可以正常工作。
这是一个预期的行为或一个已知的问题,或者我错过了什么?
UPD:我发现一些按键(例如字母)实际上被两个窗口接收。但只有一个窗口收到箭头键按下。当我创建一个我的小部件的实例时,我会调用它的widget->setFocus()
。这使小部件接收箭头按键。但是,当这个应用程序的两个实例启动时,这不起作用。
也许我应该使用事件过滤器呢?
你怎么知道第二个应用程序没有收到事件? – vahancho 2014-09-11 08:09:09
@vahancho'keyPressEvent'中的代码仅在应用程序的一个实例中执行。 – Kolyunya 2014-09-11 08:12:37
@vahancho我也可以在调试器中看到,由于没有达到断点,控件没有重新执行'keyPressEvent'。 – Kolyunya 2014-09-11 08:17:38