QT grabKeyboard函数导致输入框获取不到键盘输入事件

因为cv代码的时候不小心把grabKeyboard()写了上去,测试弹出对话框的输入时,刚开始使用输入法输入中文词汇进去没有问题,当我打错了一个字准备删除时,发现删除键完全没有用,然后我又尝试输入英文单词也没有用,整个输入框对键盘的操作没有任何反应。
在这里插入图片描述
经过了一番搜索,发现代码里多出一行

this->grabKeyboard();

这个组件会接收所有的键盘事件,直到你把这个组件库释放。所以可能键盘事件都被这个组件拦截了。。。删除后就可以正常输入了。QT助手里给的描述如下:

Grabs the keyboard input.
This widget receives all keyboard events until releaseKeyboard() is called; other widgets get no keyboard events at all. Mouse events are not affected. Use grabMouse() if you want to grab that.
The focus widget is not affected, except that it doesn’t receive any keyboard events. setFocus() moves the focus as usual, but the new focus widget receives keyboard events only after releaseKeyboard() is called.
If a different widget is currently grabbing keyboard input, that widget’s grab is released first.
See also releaseKeyboard(), grabMouse(), releaseMouse(), and focusWidget().

某翻译版本:

这个小组件接收所有的键盘事件,直到调用releaseKeyboard();其他小组件完全没有得到键盘事件。鼠标事件不受影响。如果你想抓取,请使用 grabMouse() 。
setFocus()像往常一样移动焦点,但新的焦点部件只有在调用releaseKeyboard()后才能接收键盘事件。
如果一个不同的小组件目前正在抓取键盘输入,该小组件的抓取会首先被释放。
参见releaseKeyboard(), grabMouse(), releaseMouse(), and focusWidget()。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值