qt5--键盘事件

qt5--键盘事件

需要 #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();
}

以上工程下载地址:

 

 

 

 

 

qt5--键盘事件

上一篇:Qt5适配M1


下一篇:QT5:绘制