You can use eventFilter to get mouse and keyboard events.
I use boolean to get the first and second keys, Ctrl + K and C.
I made you a sample code that works.
.cpp file:
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); firstKey = false; secondKey = false; this->installEventFilter(this); } MainWindow::~MainWindow() { delete ui; } bool MainWindow::eventFilter(QObject *object, QEvent *event) { if (object == this &&event->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); if ((keyEvent->key() == Qt::Key_Control)) { firstKey = true; return true; } else if ((keyEvent->key() == Qt::Key_K)) { secondKey = true; return true; } else if ((keyEvent->key() == Qt::Key_C)) { if(firstKey && secondKey) { firstKey = false; secondKey = false; QMessageBox::information(this, "", "Ctrl + k + c"); } return true; } else return false; } else return false; } void MainWindow::keyReleaseEvent(QKeyEvent *e) { if (e->type() == QEvent::KeyRelease) { QKeyEvent *keyEvent = static_cast<QKeyEvent *>(e); if ((keyEvent->key() == Qt::Key_Control)) { firstKey = false; } } }
.h file:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QDebug> #include <QMessageBox> #include <QKeyEvent> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); bool firstKey; bool secondKey; bool eventFilter(QObject *object, QEvent *event); void keyReleaseEvent(QKeyEvent *e); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
source share