2016-05-04 4 views
3

私のアプリケーションでは、Altキーを押すとマウスカーソルを変更して別のものを実行する必要があります。 Altキーが解放されます。Qt - Windows上でAltを押した後、メニューバーにフォーカスが移動しないようにする

Altプレスイベントは、Windows上のメニューバー(ネイティブWindowsの動作)にフォーカスを移動する間に、すべてがMac OS上で正常に動作し、私のカーソル変更の欲望の予期しない振る舞いになります。

質問:このWindows機能を無効にして(もちろんQtではコード通り)、常にAltキープレスイベントをメニューバーではなくアプリケーション自体に渡します。

答えて

2

SH_MenuBar_AltKeyNavigation Altを押した後にメニューバーの選択を行うスタイルヒント。あなたはこのようQProxyStyleをサブクラス化しstyleHintメソッドをオーバーライドする必要があります。

class MenuStyle : public QProxyStyle 
{ 
public: 
    int styleHint(StyleHint stylehint, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *returnData) const 
    { 
     if (stylehint == QStyle::SH_MenuBar_AltKeyNavigation) 
      return 0; 

     return QProxyStyle::styleHint(stylehint, opt, widget, returnData); 
    } 
}; 

次に、アプリケーションにカスタムスタイルを設定します。

QApplication a(argc, argv); 
a.setStyle(new MenuStyle()); 
+0

ありがとうございました!それは問題を解決するのに役立ちました。よく注目される。 – Wayee

関連する問題