QT窗口KeyPress事件不响应

xyconly xyconly 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
两个窗口已设置连接connect,
1窗口(:public QWidget)发出按键信号(Key_Delete),2窗口(:public QTreeWidget)响应槽函数,
第一次1窗口发出按键信号,2窗口响应函数中创建QMessageBox提示并返回,结束后继续对1窗口按键,此后1窗口的事件不响应(pEvent->type() == QEvent::KeyPress),可能是什么原因造成的?

注:虽然对按键不能进行响应,但是对MouseButtonPress,MouseButtonRelease,FocusOut,FocusIn等事件均可以响应.且1窗口非其他类的父类,没有子类accept.
2窗口中本身也有信号连接至该槽函数,且为同一个按键,而当在2窗口中鼠标点击一下后,即不再有上述问题(此时第一次点击响应1窗口按键事件,之后响应2窗口按键事件,很奇怪,但焦点<通过FocusOut/FocusIn观察得到>仍在1窗口中,2窗口不曾得到焦点,2窗口的按键事件响应是怎么进行的?)

连接:
connect(1窗口del按键,2窗口槽函数MSG)
connect(2窗口del按键,2窗口槽函数MSG)

事件响应顺序:
(****未点击2窗口****)
1)、1窗口得到焦点;
2)、1窗口按键并响应(DEL);
3)、2窗口响应函数发出MSG;
4)、MSG弹框1窗口失去焦点;
5)、确定MSG弹框,1窗口获得焦点;
6)、1窗口按键无响应;

(****点击2窗口****)
1)、1窗口得到焦点;
2)、1窗口按键并响应(DEL);
3)、2窗口响应函数发出MSG;
4)、MSG弹框1窗口失去焦点;
5)、确定MSG弹框,1窗口获得焦点;
6)、此时再按键2窗口按键响应;(2窗口未获得焦点)
7)、MSG弹框1窗口失去焦点;
8)、确定MSG弹框,1窗口获得焦点;(2窗口仍未获得焦点)
9)、重复6-8步骤
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
xyconly
Qt 21,503 成员 26,693 内容