需要 #include<QKeyEvent>
win.h
#ifndef WIN_H #define WIN_H #include <QWidget> #include <QDebug> #include<QKeyEvent> //键盘模块 class Win : public QWidget { Q_OBJECT public: Win(QWidget *parent = nullptr); ~Win(); void keyPressEvent(QKeyEvent *ev); //键盘按下事件 }; #endif // WIN_H
win.cpp
#include "win.h" Win::Win(QWidget *parent) : QWidget(parent) { } Win::~Win() { } void Win::keyPressEvent(QKeyEvent *e) { int key=e->key(); //返回触发事件键的键值 //大写字母的ASCii吗 //不加shift键的ASCii吗 static int i=0; //一个普通键 if(e->key() == Qt::Key_F5){ //如果按下的是F5键 //按键详情:https://blog.csdn.net/weixin_42692504/article/details/95116279 qDebug()<<"F5:"<<i; } //两键组合 if(e->modifiers() == Qt::ControlModifier){ //如果按下了CTRL键 if(e->key() == Qt::Key_M){ qDebug()<<"CTRL+m:"<<i; } } if(e->modifiers() == Qt::AltModifier){ //如果按下了ALT键 if(e->key() == Qt::Key_M){ qDebug()<<"ALT+m:"<<i; } } if(e->modifiers() == Qt::ShiftModifier){ //如果按下了Shift键 if(e->key() == Qt::Key_M){ qDebug()<<"Shift+m:"<<i; } } //三键组合Shift + Ctrl + A的实现 if (e->modifiers() == (Qt::ShiftModifier | Qt::ControlModifier) && e->key() == Qt::Key_A) { qDebug()<<"CTRL+Shift+a:"<<i; } //qDebug()<<key; i++; QWidget::keyPressEvent(e); //保存默认事件 }
main.cpp
#include "win.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Win w; w.show(); return a.exec(); }
以上工程下载地址: