tips & tricks/Qt

[TIP] Qt 대화상자에 단축키 추가하기(adding shortcut in a dialog)

manywaypark 2011. 7. 8. 10:32
문제
원래 Qt에서 단축키 추가는 너무 쉽다. 아래와 같이 하면 그냥 잘 된다.
action.setShortcut(QKeySequence(Qt::ALT + Qt::Key_C));
다만 문제는 MainWindow에서만 잘 된다는 것...   Orz
구글링을 해봐도 오래된 질문만 있고 답변은 없었다.

해결
처음에는 keyPressEvent 쪽에서 처리하는 다소 지저분한 방법을 쓰려했으나,
영 내키지 않던 차에 Qt Help에서 힌트를 얻을 수 있었다.
QShortcut이라는 클래스가 있었던 것이다.
QShortcut *shortcut = new QShortcut(QKeySequence(Qt::ALT + Qt::Key_C), parent);
connect(shortcut, SIGNAL(activated()),
        &action, SLOT(trigger()));

동작은 잘 하는데 메뉴 등에 표시를 위해서는 action.setShortcut()도 해주어야한다.

happy hackin'