QT窗口KeyPress事件不响应
两个窗口已设置连接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步骤
------解决思路----------------------还是发信号,你可以让父类MainWindow发一个信号让子类widget接收。