• 9051阅读
  • 4回复

[提问]清空Qt键盘事件 [复制链接]

上一主题 下一主题
 
只看楼主 倒序阅读 楼主  发表于: 2011-04-09
首先,我在qApp的层面上过滤键盘事件,当有键盘事件发生时,在过滤器eventFilter(QObject * obj,QEvent * event)里进行相应操作。
现在有一段函数,执行时间比较长。在此函数执行期间产生一系列键盘事件。在此函数执行完毕返回事件循环后,在函数执行期间积累的键盘事件一下子全都触发了。现在我想把在函数执行期间积累的键盘事件清除或忽略,同时在函数执行完毕后的键盘事件仍能处理。ps:我用的linux系统。
请问各位有什么方法吗?在线等高手 - -

离线weiweiqiao

只看该作者 1楼 发表于: 2011-04-09
你设置一个类静态的标志位不知可以否
Jobs Insanely Great.
只看该作者 2楼 发表于: 2011-04-09
回 1楼(weiweiqiao) 的帖子
现在我分析,在函数执行期间,按下按键会触发linux的中断,在这个中断中linux内核会把相应的linux键盘事件写入linux的键盘缓冲区中。
当函数执行完毕回到事件循环后,会去linux键盘缓冲区读取数据,再包装为QT的自己的键盘事件,并将此键盘事件分派到当前焦点对象去。由于无法控制事件循环,这样一来我就无法区分那些键盘事件是函数执行期间按下的,那些是函数执行完毕后按下的。

楼上是说设置标志位不知具体操作方法如何?这个标志位如何与键盘事件关联?楼上能详细解释下吗?
离线wxj120bw

只看该作者 3楼 发表于: 2011-04-10
提供个思路吧 关注下QWidget这个属性 enabled:bool 这个属性可以屏蔽键盘和鼠标的事件

离线zhanglei123
只看该作者 4楼 发表于: 2011-09-28
快速回复
限100 字节
 
上一个 下一个