2023年11月5日,周日上午
还没写完,不定期更新
目录
在Qt中,关于事件处理的函数的名字是斜体的。


在Qt中,事件处理是一种基于信号和槽机制的方式,用于响应用户输入、系统事件以及其他事件发生时的操作。Qt的事件处理机制是基于QObject类的,因为几乎所有的Qt类都是QObject类的子类。
事件处理的基本原理是,当一个事件发生时,Qt会将该事件封装成一个QEvent对象,并将其传递给对应的QObject对象。QObject对象会根据事件的类型和属性来判断如何处理该事件。如果QObject对象重写了特定的事件处理函数,它将调用相应的事件处理函数来处理该事件。
event(QEvent *event):这是QObject的基本事件处理函数。你可以在你的QObject子类中重写这个函数来处理事件。你需要根据事件的类型来判断如何处理该事件,并在需要时调用基类的event()函数。
mousePressEvent(QMouseEvent *event):当鼠标按下事件发生时,会调用此函数。你可以在这个函数中处理鼠标按下事件。
mouseReleaseEvent(QMouseEvent *event):当鼠标释放事件发生时,会调用此函数。你可以在这个函数中处理鼠标释放事件。
mouseMoveEvent(QMouseEvent *event):当鼠标移动事件发生时,会调用此函数。你可以在这个函数中处理鼠标移动事件。
keyPressEvent(QKeyEvent *event):当键盘按下事件发生时,会调用此函数。你可以在这个函数中处理键盘按下事件。
keyReleaseEvent(QKeyEvent *event):当键盘释放事件发生时,会调用此函数。你可以在这个函数中处理键盘释放事件。
resizeEvent(QResizeEvent *event):当窗口大小改变事件发生时,会调用此函数。你可以在这个函数中处理窗口大小改变事件。
closeEvent(QCloseEvent *event):当窗口关闭事件发生时,会调用此函数。你可以在这个函数中处理窗口关闭事件。
除了上述常用的事件处理函数,还有许多其他的事件处理函数可以根据需要进行重写。
在事件处理函数中,可以根据事件对象的属性来判断事件的类型和具体细节,然后根据需要执行相应的操作。还可以通过调用事件对象的方法来获取更多有关事件的信息。

在Qt助手(assistant)中,搜索“QEvent::type”,可以看到所有的事件类型


由于事件类型太多,我就不一一列举了。
右键下图中红框所示的类,就可以跳转到能看到事件类的地方


- class QActionEvent;
- class QMouseEvent;
- class QWheelEvent;
- class QHoverEvent;
- class QKeyEvent;
- class QFocusEvent;
- class QPaintEvent;
- class QMoveEvent;
- class QResizeEvent;
- class QCloseEvent;
- class QContextMenuEvent;
- class QInputMethodEvent;
- class QTabletEvent;
- class QDragEnterEvent;
- class QDragMoveEvent;
- class QDragLeaveEvent;
- class QDropEvent;
- class QShowEvent;
- class QHideEvent;