Qt的事件

2023年11月5日,周日上午

还没写完,不定期更新


目录


事件处理函数的字体特点

在Qt中,关于事件处理的函数的名字是斜体的。


Qt事件处理的工作原理

在Qt中,事件处理是一种基于信号和槽机制的方式,用于响应用户输入、系统事件以及其他事件发生时的操作。Qt的事件处理机制是基于QObject类的,因为几乎所有的Qt类都是QObject类的子类。

事件处理的基本原理是,当一个事件发生时,Qt会将该事件封装成一个QEvent对象,并将其传递给对应的QObject对象。QObject对象会根据事件的类型和属性来判断如何处理该事件。如果QObject对象重写了特定的事件处理函数,它将调用相应的事件处理函数来处理该事件。


一些常用的事件处理函数

  1. event(QEvent *event):这是QObject的基本事件处理函数。你可以在你的QObject子类中重写这个函数来处理事件。你需要根据事件的类型来判断如何处理该事件,并在需要时调用基类的event()函数。

  2. mousePressEvent(QMouseEvent *event):当鼠标按下事件发生时,会调用此函数。你可以在这个函数中处理鼠标按下事件。

  3. mouseReleaseEvent(QMouseEvent *event):当鼠标释放事件发生时,会调用此函数。你可以在这个函数中处理鼠标释放事件。

  4. mouseMoveEvent(QMouseEvent *event):当鼠标移动事件发生时,会调用此函数。你可以在这个函数中处理鼠标移动事件。

  5. keyPressEvent(QKeyEvent *event):当键盘按下事件发生时,会调用此函数。你可以在这个函数中处理键盘按下事件。

  6. keyReleaseEvent(QKeyEvent *event):当键盘释放事件发生时,会调用此函数。你可以在这个函数中处理键盘释放事件。

  7. resizeEvent(QResizeEvent *event):当窗口大小改变事件发生时,会调用此函数。你可以在这个函数中处理窗口大小改变事件。

  8. closeEvent(QCloseEvent *event):当窗口关闭事件发生时,会调用此函数。你可以在这个函数中处理窗口关闭事件。

除了上述常用的事件处理函数,还有许多其他的事件处理函数可以根据需要进行重写。

在事件处理函数中,可以根据事件对象的属性来判断事件的类型和具体细节,然后根据需要执行相应的操作。还可以通过调用事件对象的方法来获取更多有关事件的信息。


Qt中的事件类型

QEvent类的type成员函数可以用来判断事件的类型

事件的类型有哪些?

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

由于事件类型太多,我就不一一列举了。


有多少种事件类

右键下图中红框所示的类,就可以跳转到能看到事件类的地方

cpp 复制代码
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;
相关推荐
阿拉丁的梦1 小时前
教程1:用vscode->ptvsd-创建和调试一个UI(python)-转载官方翻译(有修正)
开发语言·python
木宇(记得热爱生活)1 小时前
一键搭建开发环境:制作bash shell脚本
开发语言·bash
Cisyam^1 小时前
Go环境搭建实战:告别Java环境配置的复杂
java·开发语言·golang
IAR Systems2 小时前
在IAR Embedded Workbench for Arm中实现Infineon TRAVEO™ T2G安全调试
开发语言·arm开发·安全·嵌入式软件开发·iar
jayzhang_3 小时前
SPARK入门
大数据·开发语言
蹦极的考拉3 小时前
网站日志里面老是出现{pboot:if((\x22file_put_co\x22.\x22ntents\x22)(\x22temp.php\x22.....
android·开发语言·php
fured3 小时前
[调试][实现][原理]用Golang实现建议断点调试器
开发语言·后端·golang
大翻哥哥4 小时前
Python地理空间数据分析:从地图绘制到智能城市应用
开发语言·python·数据分析
NPE~4 小时前
[手写系列]Go手写db — — 第二版
开发语言·数据库·golang·教程·db·手写系列
M_Reus_114 小时前
Groovy集合常用简洁语法
java·开发语言·windows