void keyPressEvent (QKeyEvent* eventPtr)
메서드를 오버로드하여 위젯에서 키 눌림 이벤트를 처리하고 있습니다.키 누름 이벤트는 응용 프로그램의 한 인스턴스에서만 처리됩니다.
문제는 Qt Creator에서 내 응용 프로그램의 두 인스턴스를 시작하면 그 중 하나만 효과적으로 키 눌림 이벤트를 처리한다는 것입니다. 두 번째 창에 초점을 맞춘 경우에도 이벤트가 수신되지 않습니다. 처음에 초점을 맞추면 실제로 이벤트가 수신됩니다.
두 개의 응용 프로그램이 시작될 때 다른 모든 기능이 정상적으로 작동합니다.
예상되는 동작입니까? 알려진 문제입니까? 아니면 뭔가 빠졌습니까?
UPD : 일부 키 누름 (예 : 글자)이 실제로 두 창에서 모두 수신됨을 알았습니다. 그러나 하나의 창만 화살표 키를 누릅니다. 위젯의 인스턴스를 만들 때 widget->setFocus()
을 호출합니다. 그러면 위젯이 화살표 키를 누를 수 있습니다. 그러나 응용 프로그램의 두 인스턴스가 시작될 때 작동하지 않습니다.
아마 대신 이벤트 필터를 사용해야합니까?
두 번째 응용 프로그램이 이벤트를받지 못한다는 것을 어떻게 알 수 있습니까? – vahancho
@vahancho'keyPressEvent' 내부의 코드는 애플리케이션의 한 인스턴스에서만 실행됩니다. – Kolyunya
@vahancho 또한 중단 점에 도달하지 않았기 때문에 컨트롤이'keyPressEvent'를 다시 얻지 않는다는 것을 디버거에서 볼 수 있습니다. – Kolyunya