键盘事件

键盘按下事件

键盘按下时,触发该事件,对应的子类为QKeyEvent

对应的事件类型为:QEvent::KeyPress

需要重写的函数为:

 void keyPressEvent(QKeyEvent* event) override;

键盘释放事件

键盘抬起时,触发该事件,对应的子类为QKeyEvent

对应的事件类型为:QEvent::KeyRelease

需要重写的函数为:

 void keyReleaseEvent(QKeyEvent* event) override;

QKeyEvent常用方法

event->key()//判断按下了那个按键

event->modifiers()//作用见代码

举例

class KeyboardEvent : public QWidget
{
    Q_OBJECT
public:
    explicit KeyboardEvent(QWidget *parent = nullptr):QWidget{parent}{}

protected:
    void keyPressEvent(QKeyEvent* event) override
    {
    //一般是根据按下的按键做对应的逻辑处理
    //判断按下了1个键
    switch (event->key()) {
    case Qt::Key_Up:
        qDebug()<<"按下了:up";
        break;
    case Qt::Key_A:
        qDebug()<<"按下了:A";
        break;
    case Qt::Key_1:
        qDebug()<<"按下了:1";
        break;
    case Qt::Key_Shift:
        qDebug()<<"按下了:Shift";
        break;
    default:
        break;
    }

    //判断按下了2个键
    //一般都是shit、alt、Ctrl等键和其他键一起按
    if(event->modifiers()==Qt::ShiftModifier && event->key()==Qt::Key_A)
    {
        qDebug()<<"按下了:shift+A";
    }
    if(event->modifiers()==Qt::AltModifier && event->key()==Qt::Key_A)
    {
        qDebug()<<"按下了:alt+A";
    }
    if(event->modifiers()==Qt::ControlModifier && event->key()==Qt::Key_A)
    {
        qDebug()<<"按下了:ctrl+A";
    }

    //判断按下了3个按键
    //使用或进行连接
    if(event->modifiers()==(Qt::ControlModifier|Qt::ShiftModifier)
        &&event->key()==Qt::Key_B)
    {
        qDebug()<<"按下了:ctrl+shift+B";
    }    
    }


    void keyReleaseEvent(QKeyEvent* event) override
    {
        //同鼠标按下同理,差不多
    }


};

若有错误·,欢迎指正!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值