【Qt】事件处理——按键事件处理

Qt事件处理

按键事件

Qt按键事件使用QKeyEvent类描述。当有按键按下或者松开的时候,按键事件将会发送消息给QWidget
按键事件包含一个特殊的接收标记,标记接收者是否处理该按键事件。
键盘上的每一个键在Qt作为枚举类型存在,如ESC键为Qt::Key_Escape

  • 对按键按下事件进行处理,要重载按键按下处理函数keyPressEvent()

  • 对按键松开事件进行处理,要重载按键松开处理函数keyReleaseEvent()

    这两个函数声明如下:

    void keyPressEvent(QKeyEvent *event);
    void keyReleaseEvent(QKeyEvent *event);
    

在按键事件处理函数中,可以使用event->key()得到按下或释放的按键的代码。

示例:

void Dialog::keyReleaseEvent(QKeyEvent *event)
{
    int keys = event->key();  // 按键代码
    switch (keys) {
    case Qt::Key_L:  // 按下L键
    {
        // do something
    }
        break;
    case Qt::Key_Escape:  // 按下ESC键,退出程序
    {
        // do something
    }
        break;
    // ...
    default:
    {
		// do something
    }
        break;
    }
}

出现的问题:参考链接https://blog.csdn.net/sinat_21107433/article/details/101158863博主出现方向键无法响应的问题,查看文档描述,必须调用setFocusPolicy()后才能接收按键事件,可以通过调用函数setFocusPolicy()或者在界面设置FocusPolicy

更多信息参考:https://www.cnblogs.com/linuxAndMcu/p/11023299.html。

你可能感兴趣的:(QT,qt,开发语言,ui)