type
status
date
slug
summary
tags
category
icon
password
Property
事件类型
常见的事件有如下:
- 键盘事件:按键按下和松开
- 鼠标事件:鼠标指针移动、鼠标按键按下和松开
- 拖放事件:用鼠标进行拖放
- 滚轮事件:鼠标滚轮滚动
- 绘屏事件:重绘屏幕的某些部
- 定时事件:定时器到时
- 焦点事件:键盘焦点移动
- 进入和离开事件:鼠标指针移入 Widget 内,或者移出
- 移动事件:Widget 的位置改变
- 大小改变事件:Widget 的大小改变。
- 显示和隐藏事件:Widget 的显示和隐藏
- 窗口事件:窗口是否为当前窗口
事件处理方法
PyQt5 中事件处理的方法有如下五种:
- 重写事件函数
将如
mousePressEvent()
、keyPressEvent()
这些事件函数重写- 重新实现
QObject.event()
对于某些事件没有内置提供的处理函数,可以采用此方法
- 安装事件过滤器 对QObject 调用installEventFilter,让 QObject 的全部事件先传到事件过滤函数 eventFilter 中,然后再这个函数中对事件进行修改,并确定哪些事件使用自定义事件处理函数,那些事件使用默认事件处理函数
- 在 QApplication 中安装事件过滤器 QApplication 的时间过滤器可以第一时间捕获 QObject 的所有事件
- 重新实现 QApplication 的
notify()
方法notify()
函数用于分发事件,可以达到在任何事件处理器之前捕获事件
重构事件处理器
事件对象
事件发送
有时候会想知道是哪个组件发出了一个信号,PyQt5里的
sender()
方法能搞定这件事信号发送
QObject实例能发送事件信号,下面的例子是发送自定义的信号: