Globale Tastatur Events abfangen mit QT

Globale Events, z.B. KeyBoard-Events lassen sich mit QT zentral abfangen, in dem man einen globalen EventFilter installiert:

QCoreApplication::instance()->installEventFilter(mainWindow);

"mainWindow" ist in diesem Fall einfach unser Hauptfenster, kann aber ein beliebiges Objekt vom Typ "QObject" sein. In diesem überschreibt man einfach die Methode "eventFilter":

<mainwindow.h>

bool eventFilter(QObject *watched, QEvent *event);

Die Implementierung erfolgt im Beispiel so:

<mainwindow.cpp>

bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
  Q_UNUSED(watched);
  if (event->type() == QEvent::KeyPress)
  {
    QKeyEvent *keyevent = (QKeyEvent*)event;

    if ((keyevent->modifiers()==Qt::ALT) && (keyevent->key() == Qt::Key_F1))
    {
        qDebug() << "Global Key Event catched";
    }
  }
  return false;
}

Das Objekt wird anschließend als EventFilter installiert:

MainWindow* mainWindow = new MainWindow();
QCoreApplication::instance()->installEventFilter(mainWindow);

Werbung



comments powered by Disqus

Copyright Dunkel & Iwer GbR | Datenschutzerklärung | Impressum