2016-11-18 32 views
0

。私はQKeySequence :: ZoomInはそれにマップし、ズームのために他のネイティブのキーの組み合わせになることが判明しました他の種類のキーボードでも使用できます。私はこれを行うには、以下のコードを使用しましたが、これは私が期待したように正しく動作しません。このショートカットを作成するとき、私は間違って何をしていますか?私はQTを使用していると私は私がズームインするショートカットとしてCMDおよびプラスを使用したいQActionを、持っている

QAction *zoomInAction = new QAction(QIcon("zoominimg.png"),"Zoom in", this); 
zoomInAction->setShortcut(QKeySequence::ZoomIn); 
connect(zoomInAction, SIGNAL(triggered()), this, SLOT(zoomIn())); 
あなたは=、その後に使用するキーをシフトを押す必要がある+キーを使用している場合、しかし、外付けキーボードのテンキーの+キーを使用するときにショートカットが機能し、ショートカットは、もはや作品

、およびzoomInメソッドが呼び出されることはありません。

は、誰もがこれまでこの問題に遭遇し、それを解決することができる方法を知っていますか?

ことができます場合、私はMacOSの10.12にはQt 5.7を使用しています。

答えて

0

あなたが経験する動作は仕様です。異なるキーボードレイアウトが使用された場合に起こりうる曖昧さを避けるために、Qtはstandard shortcutsしか使用しません。 Qtのドキュメントで提供さ

An exampleはあなたの問題を要約したものです。たとえば、ショートカットは、CtrlプラスとCtrlマイナスの場合

、多くの場合、グラフィックアプリケーションでズーム操作のためのショートカットとして使用されており、これらは "として指定することができます「Ctrl ++」および「Ctrl + - 」と表示されます。ただし、これらのショートカットの指定方法と解釈方法は、キーボードレイアウトによって異なります。キーキーボード上の隣接していないが、それでも、Shiftキーを押ししなくても、両方のショートカットを活性化させることができるようになります - ノルウェーキーボードのユーザーは+とがあることに注意します。しかし、イギリスのキーボードを使用するユーザーは、Shiftキーを押しながら+記号を入力する必要があり、ショートカットを効果的に "Ctrl + Shift + ="と同じにする必要があります。

一部の開発者は、完全に彼らはショートカットをアクティブにするために彼らのキーボードで使用するすべての修飾子を指定するために頼るかもしれませんが、これはまた別のキーボードレイアウトのユーザーのための予期しない動作になります。

例えば英国のキーボードを使用する開発者は、Ctrl +と同じように動作するショートカットを作成するために、キーシーケンスとして "Ctrl + Shift + ="を指定することがあります。しかし、=キーはノルウェー語キーボードのShiftキーを使用してアクセスする必要があり、必要なショートカットを効果的にCtrl Shift Shift =(不可能なキーの組み合わせ)にします。それでもShift修飾子を伴うショートカットを使用したい場合は

したがって、あなたはデフォルトのものに加えて、それを自分でコーディングする必要があります。そうすることで、ハードコーディングされたショートカットが他のキーボードレイアウトでは期待どおりに機能しない可能性があることに注意してください。

関連する問題