Signals&Slots
2021-7-21
| 2023-8-2
0  |  阅读时长 0 分钟
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() 函数用于分发事件,可以达到在任何事件处理器之前捕获事件
 
 
 
notion image
 
 

重构事件处理器

notion image
 

事件对象

notion image

事件发送

有时候会想知道是哪个组件发出了一个信号,PyQt5里的sender()方法能搞定这件事
notion image
 

信号发送

QObject实例能发送事件信号,下面的例子是发送自定义的信号:
notion image

鼠标追踪

  • Python
  • PyQT5
  • 布局管理QDialog对话框
    目录