2016-11-18 14 views
0

QT를 사용하고 있는데 QAction을 사용하고 있는데, Cmd와 Plus를 단축키로 사용하고 싶습니다. QKeySequence :: ZoomIn이 확대/축소를위한 다른 기본 키 조합에 매핑된다는 것을 알았습니다 다른 유형의 키보드에서. 아래 코드를 사용하여이 작업을 수행했지만 희망했던대로 제대로 작동하지 않습니다.바로 가기를 만들 때 내가 뭘 잘못하고 있니?

QAction *zoomInAction = new QAction(QIcon("zoominimg.png"),"Zoom in", this); 
zoomInAction->setShortcut(QKeySequence::ZoomIn); 
connect(zoomInAction, SIGNAL(triggered()), this, SLOT(zoomIn())); 
당신이 = 다음 사용하는 Shift 키를 눌러야 할 + 키를 사용하는 경우, 그러나, 외부 키보드의 숫자 키패드에있는 + 키를 사용하면 바로 가기가 작동하는 바로 가기가 더 이상 작동

하고, zoomIn 메서드가 호출되지 않습니다.

누구도 이전에이 문제가 발생했는지 그리고 해결 방법을 알고 있습니까?

MacOS 10.12에서 Qt 5.7을 사용하고 있습니다.

답변

0

| 피드백 보내기 추가 정보 의도적으로 경험대로 동작입니다. Qt는 다른 키보드 레이아웃을 사용할 때 발생할 수있는 모호성을 피하기 위해 standard shortcuts만을 사용합니다.

An example Qt는 워드 프로세서에 문제가 요약 제공 :

예를 들어

, 단축키 Ctrl 키 플러스 Ctrl 키를 뺀 종종 그래픽 애플리케이션에서 줌 조작에 대한 바로 가기로 사용되며, 이들은 "로 지정 될 수있다 Ctrl ++ "와"Ctrl + - "를 각각 누르십시오. 그러나 이러한 바로 가기가 지정되고 해석되는 방식은 키보드 레이아웃에 따라 다릅니다. 노르웨이어 키보드 사용자는 + 및 - 키가 키보드에서 인접하지 않지만 Shift 키를 누를 필요없이 두 단축키를 모두 활성화 할 수 있음을 알 수 있습니다. 그러나 영국 키보드를 사용하는 사용자는 + 기호를 입력하려면 Shift 키를 누른 상태에서 바로 가기를 "Ctrl + Shift + ="와 동일하게 만듭니다.

일부 개발자는 키보드에서 사용하는 모든 수정자를 지정하여 바로 가기를 활성화하는 방법을 사용하지만 다른 키보드 레이아웃을 사용하는 사용자도 예기치 않은 동작을합니다.

예를 들어, 영국 키보드를 사용하는 개발자는 Ctrl +와 동일한 방식으로 동작하는 바로 가기를 만들기 위해 키 시퀀스로 "Ctrl + Shift + ="를 지정하기로 결정할 수 있습니다. 그러나 = 키는 노르웨이어 키보드의 Shift 키를 사용하여 액세스해야합니다. 필요한 바로 가기를 Ctrl Shift Shift = (불가능한 키 조합)로 변경해야합니다.

따라서 Shift 수정자를 포함하는 바로 가기를 계속 사용하려면 기본값 이외에 직접 코드를 만들어야합니다. 이렇게하면 하드 코딩 된 바로 가기가 다른 자판 배열에서 예상대로 작동하지 않을 수 있습니다.