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步骤
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步骤
...全文
相关推荐
QT键盘和鼠标消息
#### 事件类型与分类QT提供了丰富的事件类型,涵盖从最基本的鼠标点击到复杂的输入法编辑等场景。以下是关键的事件类型及其对应的事件类:- **None**: 不代表任何事件。
qt键盘映射和焦点移动
在Qt框架中,键盘输入是通过QEvent::KeyPress和QEvent::KeyRelease事件来处理的。当你按下或释放一个键时,这些事件会被发送到当前具有焦点的窗口。
利用QT程序设计过滤器
例如,你可以用它来实现全局热键,监听特定窗口的动作,或者在用户进行某些操作时触发自定义逻辑。通过这种方式,开发者可以创建出更智能、更响应用户需求的应用程序。
Qt培训Qt培训.ppt
## 信号与槽信号和槽是Qt的核心机制,用于对象间的通信。信号是当特定事件发生时自动发出的,而槽是响应这些信号的函数。区别在于:1. **事件处理函数**有返回值,用来决定事件是否继续处理。
Qt界面响应键盘事件
在这个场景下,"Qt界面响应键盘事件"是关于如何在Qt应用中捕获并处理键盘输入的事件。这涉及到Qt的信号与槽机制,以及对键盘事件的监听和响应。


