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
评论区