一、简介
QKeyEvent 类用来描述一个键盘事件。当键盘按键被按下或者被释放时,键盘事件便会被发送给拥有键盘输人焦点的部件。
QKeyEvent 的 key() 函数可以获取具体的按键,对于 Qt 中给定的所有按键,可以在帮助中查看 Qt: :Key 关键字。需要特别说明的是,回车键在这里是 Qt::Key_Return;键盘上的一些修饰键,比如 Ctrl 和 Shift 等, 这里需要使用 QKeyEvent 的 modifiers() 函数来获取,可以在帮助中使用 Qt:: KeyboardModifier 关键字来査看所有的修饰键。
QKeyEvent 有两个键盘事件成员函数,在头文件.h中进行声明:
#include <QKeyEvent>
protected:
void keyPressEvent(QKeyEvent *event); //键盘按下事件
void keyReleaseEvent(QKeyEvent *event); //键盘松开事件
二、常用操作
下面是些常用操作:
// 键盘按下事件
void Widget::keyPressEvent(QKeyEvent * event)
{
// 普通键
switch (event->key())
{
// ESC键
case Qt::Key_Escape:
qDebug() <<"ESC";
break;
// 回车键
case Qt::Key_Return:
qDebug() <<"Enter";
break;
// F1键
case Qt::Key_F1:
qDebug() <<"F1";
break;
}
// 两键组合
if(event->modifiers() == Qt::ControlModifier) { // 如果按下了CTRL键
if(event->key() == Qt::Key_M){
qDebug()<<"CTRL + M";
}
}
if(event->modifiers() == Qt::AltModifier) { // 如果按下了ALT键
if(event->key() == Qt::Key_M)
qDebug()<<"ALT + M";
}
if(event->modifiers() == Qt::ShiftModifier){ // 如果按下了Shift键
if(event->key() == Qt::Key_M)
qDebug()<<"Shift + M";
}
// 三键组合Shift + Ctrl + A的实现
if (event->modifiers() == (Qt::ShiftModifier | Qt::ControlModifier) && event->key() == Qt::Key_A) {
qDebug() << "CTRL + Shift + A";
}
}
// 键盘释放事件
void Widget::keyReleaseEvent(QKeyEvent *event)
{
// 方向UP键
if(event->key() == Qt::Key_Up)
{
qDebug() << "rele