PyQt学习随笔:重写组件的event方法捕获组件的事件

在PyQt的组件对象中,都有从QWidget中继承的方法event,而QWidget.event是对QObject类定义的虚拟方法event的实现。

event方法的语法:
bool event(QEvent e)

event方法用于接收发给一个对象的事件,如果事件被识别并处理应该返回True,对于没有被应用识别和处理的事件,需要调用父类的event方法以保证事件的正确处理。

注意:
1、该方法中只能捕获确认是发给对应对象的事件,不能捕获通过该对象转发给上级的事件;
2、通过重写该方法可以捕获对象的所有事件,但Qt并不推荐这种使用方法,而应该通过重写具体事件的具体方法来捕获特定事件;
3、event和特定事件的事件处理方法针对一个特定事件处理时,先调用event再调用特定事件的事件处理方法;
4、如果event处理事件时,没有调用父类方法,则对应的事件不能再被该事件的特定事件处理方法捕获;
5、键盘按下和释放事件的处理方式与其他事件不同,event()检查释放时tab和shift+tab,如果是尝试适当移动焦点。如果没有要将焦点移动到的小部件(或按键不是tab或shift+tab),event()调用keypressevent()。


博客地址:https://blog.csdn.net/LaoYuanPython

老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

posted on 2019-10-14 21:23  老猿Python  阅读(809)  评论(0编辑  收藏  举报