【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。