当前位置: 首页 > news >正文

Qt的事件

2023年11月5日,周日上午

还没写完,不定期更新


目录

  • 事件处理函数的字体特点
  • Qt事件处理的工作原理
  • 一些常用的事件处理函数
  • Qt中的事件类型
  • QEvent类的type成员函数可以用来判断事件的类型
  • 事件的类型有哪些?
  • 有多少种事件类

事件处理函数的字体特点

在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”,可以看到所有的事件类型

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


有多少种事件类

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

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;

http://www.lryc.cn/news/218598.html

相关文章:

  • MTK联发科天玑9000旗舰5G移动平台处理器_MT6983芯片定制开发
  • InnoDB中Buffer Pool详解
  • 3D视觉引导工业机器人上下料,助力汽车制造业实现智能化生产
  • 从Spring说起
  • JavaScript从入门到精通系列第二十九篇:正则表达式初体验
  • Go语言并发控制:原理与实践
  • 3、Sentinel 动态限流规则
  • HDU 2648:Shopping ← STL map
  • 自己动手实现一个深度学习算法——三、神经网络的学习
  • C++中使用复制构造函数确保深复制
  • 【Mysql】Mysql中表连接的原理
  • Java配置47-Spring Eureka 未授权访问漏洞修复
  • 6.Spark共享变量
  • FaceChain开源虚拟试衣功能,打造更便捷高效的试衣新体验
  • java的几种对象: PO,VO,DAO,BO,POJO
  • 【使用Python编写游戏辅助工具】第三篇:鼠标连击器的实现
  • C++二分查找算法的应用:最小好进制
  • 2022年12月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 行业安卓主板-基于RK3568/3288/3588的AI视觉秤/云相框/点餐机/明厨亮灶行业解决方案(一)
  • fo-dicom缺少DicomJpegLsLosslessCodec
  • 跳跳狗小游戏
  • CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境
  • shell_70.Linux调整谦让度
  • 【jvm】虚拟机栈
  • Flink SQL Over 聚合详解
  • 【鸿蒙软件开发】ArkUI之容器组件Counter(计数器组件)、Flex(弹性布局)
  • PyTorch入门学习(十一):神经网络-线性层及其他层介绍
  • 农业水土环境与面源污染建模及对农业措施响应
  • 回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测(多指标、多图)
  • 扫地机器人遇瓶颈?科沃斯、石头科技“突围”