使用标准QT事件过滤器并将其注册到应用程序中。你可以处理任何按键
用于您的应用程序
。
class KeyInterceptor: public QObject
{
Q_OBJECT
protected:
bool eventFilter(QObject *obj, QEvent *event);
};
bool KeyInterceptor::eventFilter(QObject *obj, QEvent *event) {
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
if (keyEvent->modifiers() == Qt::ALT) {
qDebug("press ALT...do something");
return true;
}
}
// normal handling
return QObject::eventFilter(obj, event);
}
并且在主程序中:
app.installEventFilter(new KeyInterceptor());
但是你
无法处理其他键事件处理程序
(像操作系统一样)无论如何都要处理ALT-TAB序列。