2016-11-18 95 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 + Shift + =」作爲按鍵順序,以便創建一個與Ctrl plus相同的快捷方式。但是,需要使用挪威語鍵盤上的Shift鍵訪問=鍵,才能實現所需的快捷鍵Ctrl Shift Shift =(不可能的組合鍵)。

因此,如果您仍想使用涉及修改器的快捷方式,則除了缺省值之外,您必須自己對其進行編碼。通過這樣做,您應該記住,硬編碼的快捷方式可能無法在其他鍵盤佈局上按預期工作。