QMainWindowでkeyPressEvent()を使ってキー入力を取得しようとすると、Qt::Key_Right、Qt::Key_Leftなどのキーが取れなかったので、取得する方法がないか探してみました。どうやらinstallEventFilter()を実行してから、eventFilter()を使えば発生したイベントが全部取得できるようだということがわかりました。
下記コードのような感じです。
class MainWin: public QMainWindow
{
public:
MainWin();
private:
virtual bool eventFilter(QObject *obj, QEvent *event);
};
MainWin::MainWin()
{
qApp->installEventFilter(this);
}
bool MainWin::eventFilter(QObject *obj, QEvent *event)
{
switch(event->type())
{
case QEvent::KeyPress:
printf("Key %d pressed\n", static_cast<QKeyEvent*>(event)->key() );
break;
default:
break;
}
return false;
}
下記ページのサンプルが参考になりました。