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