QWidget QLabel没有响应keyEvent键盘事件

54 篇文章 1 订阅
54 篇文章 0 订阅

在Qt中我们经常通过重写下面两种虚函数来实现按键事件

virtual void keyPressEvent(QKeyEvent *event);
bool eventFilter(QObject* watched, QEvent* event);

但是有时候会遇到无法触发的情况(特别是QWidget,QLabel),这个时候我们会考虑是不是被父窗口给截获了没有传递给子窗口。

如果依旧没有解决问题,那可能是这个widget没有焦点的缘故,通常可以通过鼠标点击和tab键可以获取焦点,但是像QWidget、QLabel即使你鼠标点上去了它也不会有焦点的,所以它触发不了键盘事件,你应该给它设置一个焦点获取的策略,而不应该是Qt::NoFocus,如下代码接收tab和click焦点。

setFocusPolicy(Qt::StrongFocus);

只有获取了焦点才能响应按键事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值