QWidget 常用事件整理

生命周期相关

event 介绍
showEvent(QShowEvent) 当窗口/控件显示时触发(包括第一次显示和再次显示)。 常用于界面初始化逻辑。
hideEvent(QHideEvent) 当窗口/控件被隐藏时触发。例如调用 hide()close(),或者父控件被隐藏。
closeEvent(QCloseEvent) 当用户点击关闭按钮或程序调用 close() 时触发。可以决定是否允许关闭(event.accept() / event.ignore())。
resizeEvent(QResizeEvent) 当控件大小发生变化时触发。 一般用于重新布局、动态调整子控件大小。
moveEvent(QMoveEvent) 当控件位置变化时触发。
paintEvent(QPaintEvent) 当控件需要重绘时触发。 常用于自定义绘制(配合 QPainter)。

鼠标事件

event 介绍
mousePressEvent(QMouseEvent) 鼠标按下时触发。
mouseReleaseEvent(QMouseEvent) 鼠标释放时触发。
mouseMoveEvent(QMouseEvent) 鼠标在控件上移动时触发(如果按下时移动,可以结合 setMouseTracking(True) 控制)。
mouseDoubleClickEvent(QMouseEvent) 鼠标双击时触发。
enterEvent(QEnterEvent) 鼠标进入控件区域时触发。
leaveEvent(QEvent) 鼠标离开控件区域时触发。
wheelEvent(QWheelEvent) 鼠标滚轮滚动时触发。

键盘事件

event 介绍
keyPressEvent(QKeyEvent) 按键按下时触发。 可以用 event.key() 判断具体按键。
keyReleaseEvent(QKeyEvent) 按键释放时触发。

焦点事件

event 介绍
focusInEvent(QFocusEvent) 当控件获得输入焦点时触发。
focusOutEvent(QFocusEvent) 当控件失去输入焦点时触发。

拖拽与上下文菜单

event 介绍
dragEnterEvent(QDragEnterEvent) 拖拽对象进入控件时触发。
dropEvent(QDropEvent) 拖拽对象放下时触发。
contextMenuEvent(QContextMenuEvent) 右键菜单事件(常用于弹出 QMenu)。

输入法相关

event 介绍
inputMethodEvent(QInputMethodEvent) 输入法(如中文拼音输入)处理中触发。 一般用于复杂文本输入控件。

小结

常用的主要分为几类:

  • 界面生命周期showEvent / hideEvent / closeEvent / resizeEvent / paintEvent

  • 鼠标mousePressEvent / mouseReleaseEvent / mouseMoveEvent / mouseDoubleClickEvent / wheelEvent

  • 键盘keyPressEvent / keyReleaseEvent

  • 焦点focusInEvent / focusOutEvent

  • 拖拽 & 菜单dragEnterEvent / dropEvent / contextMenuEvent