2011-11-04 69 views
1

如何检测用户按下哪个按键?
试图搜索网页,但无法找到真正有趣的东西。
谢谢。映射按键事件qt

+1

你看过[keyPressEvent](http://doc.qt.nokia.com/4.7/qwidget.html#keyPressEvent)吗? – Mat

回答

6

如果你想在全球范围内检测按键(用于应用程序快捷方式等很有用),你需要让你的QObject S中eventFilter的应用程序之一,由第一超载QObject::eventFilter

bool cKeyPressEater::eventFilter(QObject *Object, QEvent *Event) 
{ 
    if (Event->type() == QEvent::KeyPress) 
    { 
    QKeyEvent *KeyEvent = (QKeyEvent*)Event; 

    switch(KeyEvent->key()) 
    { 
     case Qt::Key_F1: 
     //do something 
     break; 
     default: 
     break; 
    } 
    } 
} 

.. 。而随后安装该对象作为eventFilter您的应用程序:

QObject *KeyPressEater = GetYourEventFilterObject(); 
QCoreApplication::instance()->installEventFilter(KeyPressEater); 

否则,@Mat上面说,只是超载QWidget::keyPressEvent。您需要setFocusPolicy,并且实际上有重点才能获得按键。