Qt中解除按键在聚焦时键盘空格键可以控制,只允许鼠标左键可以点击按键
首先需要知道原因,为什么键盘上的空格键也可以点击按键?
根据Qt官网说明:A push button emits the signal clicked() when it is activated by the mouse, the Spacebar or by a keyboard shortcut.
QPushButton默认按空格键也会触发clicked()信号。实际就是QPushButton与键盘空格键事件绑定了,QPushButton接受了键盘事件,导致按下空格键相当于点击了QPushButton
这一点在ui文件中的QPushButton的默认属性是强聚焦可以看出来
用户使用键盘上的Tab键或者鼠标左键点击QPushButton按键,把焦点聚集到按钮时,再按下空格就相当于点击了按钮。
解决办法
把按钮的focusPolicy属性,设置为NoFocus,即调用QPushButton的setFocusPolicy()
函数:
setFocusPolicy(Qt::NoFocus);
这样该按钮就无法接收键盘事件了。