Qt键盘事件

Qt键盘事件

1. 主要函数

主要重写如下两个函数:键盘按下事件和键盘释放事件

[virtual protected] void QWindow::keyPressEvent(QKeyEvent *event)
[virtual protected] void QWindow::keyReleaseEvent(QKeyEvent *event)

2. QKeyEvent常用函数

Qt::KeyboardModifiers QKeyEvent::modifiers() const
int QKeyEvent::key() const

Qt::KeyboardModifiers QKeyEvent::modifiers() const
Returns the keyboard modifier flags that existed immediately after the event occurred.
Warning: This function cannot always be trusted. The user can confuse it by pressing both Shift keys simultaneously and releasing one of them, for example.
返回事件发生后立即存在的键盘修饰符标志。
警告: 此功能并不总是可信的。例如,用户可以通过同时按下两个 Shift 键并释放其中一个来混淆它。

常见修饰键列表:

枚举名称枚举值键名称解释
Qt::NoModifier0x00000000No modifier key is pressed.
Qt::ShiftModifier0x02000000A Shift key on the keyboard is pressed.
Qt::ControlModifier0x04000000A Ctrl key on the keyboard is pressed.
Qt::AltModifier0x08000000An Alt key on the keyboard is pressed.

int QKeyEvent::key() const
Returns the code of the key that was pressed or released.
返回按下或释放键的键名

3. 示例

键盘方向键按下时显示按键名称

// .h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

protected:
    void keyPressEvent(QKeyEvent* event) override;
    void keyReleaseEvent(QKeyEvent* event) override;


private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

// .cpp文件
#include "MainWindow.h"
#include "ui_MainWindow.h"
#include <QKeyEvent>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::keyPressEvent(QKeyEvent *event)
{
    if (Qt::Key_Left == event->key())
    {
        ui->labelKeyInfo->setText(QString::fromLocal8Bit("左"));
    }

    if (Qt::Key_Right == event->key())
    {
        ui->labelKeyInfo->setText(QString::fromLocal8Bit("右"));
    }

    if (Qt::Key_Up == event->key())
    {
        ui->labelKeyInfo->setText(QString::fromLocal8Bit("上"));
    }

    if (Qt::Key_Down == event->key())
    {
        ui->labelKeyInfo->setText(QString::fromLocal8Bit("下"));
    }
}

void MainWindow::keyReleaseEvent(QKeyEvent *event)
{

}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值