小工具知识网

当前位置: 首页 > 行业知识 > Qt 键盘事件

行业知识

Qt 键盘事件

2026-11-15 00:23:17 来源:互联网转载

文章目录

  • 1. 键盘按下、释放事件的基本使用
  • 2. 键盘事件移动标签
    • 2.1 界面上添加标签
    • 2.2 ���动标签

      QEvent::KeyPress

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

      QEvent::KeyRelease

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

      1. 键盘按下、释放事件的基本使用

      只需重写keyPressEvent()和keyPressEvent()两个函数即可

      首先,在key_widget.h中添加两个函数的声明

      // key_widget.hprotected:    // 重写键盘事件    void keyPressEvent(QKeyEvent *event);    void keyReleaseEvent(QKeyEvent *event);

      然后,来到key_widget.cpp实现这2个函数:

      // key_widget.cppvoid KeyWidget::keyPressEvent(QKeyEvent* event) {    // 1. 单个按键    switch (event->key()) {        case Qt::Key_Return:            qDebug() x(), this->height());            }            break;        case Qt::Key_S:            qDebug() move(lbl->x(), lbl->y() + 20);            if (lbl->y() >= this->height()) {                lbl->move(lbl->x(), -lbl->height());            }            break;        case Qt::Key_A:            qDebug() move(lbl->x() - 20, lbl->y());            if (lbl->x() width())) {                lbl->move(this->width(), lbl->y());            }            break;        case Qt::Key_D:            qDebug() move(lbl->x() + 20, lbl->y());            if (lbl->x() >= this->width()) {                lbl->move(0, lbl->y());            }            break;        case Qt::Key_B:            qDebug() key() == Qt::Key_A) {        qDebug() modifiers() == Qt::ShiftModifier && event->key() == Qt::Key_B) {        qDebug() modifiers() == Qt::AltModifier && event->key() == Qt::Key_C) {        qDebug() modifiers() == Qt::ControlModifier | Qt::ShiftModifier) &&        event->key() == Qt::Key_A) {        qDebug() key()) {        case Qt::Key_Return:            qDebug() x(), -lbl->height());            }            break;        case Qt::Key_A:            qDebug() move(lbl->x() - 20, lbl->y());            if (lbl->x() width())) {                lbl->move(this->width(), lbl->y());            }            break;        case Qt::Key_D:            qDebug() move(lbl->x() + 20, lbl->y());            if (lbl->x() >= this->width()) {                lbl->move(0, lbl->y());            }            break;        case Qt::Key_B:            qDebug() key() == Qt::Key_A) {        qDebug() modifiers() == Qt::ShiftModifier && event->key() == Qt::Key_B) {        qDebug() modifiers() == Qt::AltModifier && event->key() == Qt::Key_C) {        qDebug() modifiers() == Qt::ControlModifier | Qt::ShiftModifier) &&        event->key() == Qt::Key_A) {        qDebug() 

上一篇:方舟怎么串联服务器玩?

下一篇:主机信息英文缩写怎么写