2012-06-20 4 views
0

커서 키를 사용하여 QGridLayout에서 항목을 선택하는 방식을 어떻게 변경할 수 있습니까? 좌/우 커서 키를 사용하여 선택 항목을 수평으로 이동하고 위/아래 키를 사용하여 선택 항목을 수직으로 이동하려합니다. 누구에게 책임이 있습니까? 레이아웃, 항목 컨테이너 또는 탭 순서?사용자 지정 QGridLayout 항목 선택 동작

+0

Lyout는 AFAIK (초점)에 관련된 모든 것에 대해 책임을지지 않습니다. 위젯은 포커스와 탭 순서를 처리 할 책임이 있습니다. 행크가 말했듯이, 당신 스스로 그것을 구현해야합니다. –

답변

1

기본 위젯이 누르는 키를 잡으려면 keyPressEvent() 메소드를 다시 구현할 수 있습니다. 그런 다음 QGridLayout::itemAtPosition (int row, int column)을 호출하여 레이아웃에서 원하는 위젯에 액세스 한 다음 여기에 포커스를 설정할 수 있습니다.

+0

감사합니다. 이 방법을 시도했지만 keyPressEvent 내 위젯 (그냥 keyReleasedEvent) 또는 심지어 메인 이벤트 처리기 (def 이벤트 (자체, 대상, 이벤트)) QEvent.KeyPress받지 못했습니다 호출되지 않았습니다. QGridLayout의 모든 위젯에 대해 eventFilter를 설치하여 키 이벤트를 처리하고 계산 된 위젯에 포커스를 설정했습니다. – ternyk