头文件中添加:
void keyPressEvent(QKeyEvent *event);
cpp
void 自绘控件::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Up)//上
{
qDebug() << "press key up";
return;
}
else if(event->key() == Qt::Key_Down)//下
{
qDebug() << "press key down";
return;
}
else if (event->key() == Qt::Key_Left)//左右
{
qDebug() << "press key left";
return;
}
else if (event->key() == Qt::Key_Right)//右
{
qDebug() << "press key right";
return;
}
if ((event->modifiers() == Qt::ControlModifier) and (event->key() == Qt::Key_A) )//CTRL+A
{
qDebug()<<"ctrl-a";
}
}
上面这样是无法获取组合键响应的,需要在构造函数中添加:this->grabKeyboard();//捕获键盘消息
注意:
帮组文档:
Grabs the keyboard input.
This widget receives all keyboard events until

本文详细介绍了在Qt中如何通过自定义控件捕获全局键盘事件,包括处理方向键、组合键等,并提供了实现代码示例。特别强调了使用grabKeyboard()方法的注意事项及其实现细节。
最低0.47元/天 解锁文章
1061

被折叠的 条评论
为什么被折叠?



