我正在通過重載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