QEvent类是PyQt5.QtCore中定义的事件处理的基类,事件对象包含了事件对应的参数。

Python & PyQt学习随笔:PyQt主程序的基本框架》介绍了PyQt程序通过sys.exit(app.exec_()) 进入程序主循环,开始处理事件,它从事件队列中获取本地窗口系统事件,将它们转化为 QEvents,然后将转换后的事件发送给 QObjects对象。

QObjects 对象通过调用 QObject.event() 函数接收事件,可以通过在子类中重写该函数来定义自己的事件处理代码,并可以添加用户自定义的事件类型,QWidget.event() 就是这样一个典型例子。

缺省情况下,事件被分发给类似 QObject.timerEvent() 和 QWidget.mouseMoveEvent() 这样的事件处理函数。QObject.installEventFilter() 允许一个对象拦截发往另一个对象的事件。

基本的 QEvent 只包含了一个事件类型参数(QEvent.Type类型)和一个"accept"标志:

1、事件类型QEvent.Type为一个枚举类,PyQt5.11中已经定义的取值请见《PyQt学习随笔:Qt事件QEvent.type类型常量及其含义资料速查》,用户自定义事件的取值范围请见《PyQt学习随笔:自定义Qt事件可以使用的事件类型的常量值范围》;

2、"accept"标志表示事件接收对象是否需要该事件,需要的事件就会被接收对象处理,不需要的就会传递给对象的父组件对象。"accept"标志可以通过accept()设置,通过ignore()被清除,它的值缺省情况下是被设置了的,但应用中不能依赖这种默认设置,因为从QEvent 派生的子类可能会选择在其构造函数中清除它。

QEvent 的子类包含了特定事件的额外参数。

QEvent提供的方法包括:

1、构造方法:QEvent( type),参数type为QEvent.Type的一个值;

2、accept()方法,设置"accept"标志为True,等同于setAccepted(True);

3、ignore()方法,清除"accept"标志,等同于setAccepted(False);

4、isAccepted()方法,该方法返回"accept"标志的标记值,为True就是标记置位了;

5、setAccepted(bool accepted)方法,用于设置或清除"accept"标志;

6、spontaneous() 方法,如果事件来源于应用外(即系统事件)则返回True,否则返回False.

7、type() 方法,返回事件对象的事件类型,其中QEvent.Type为一个枚举类的一个值;

8、registerEventType(hint = -1)方法,用于注册和返回一个用户自定义事件类型,它是线程安全的函数。其中:

1>参数hint为注册事件者期望的事件类型值,对应值如果没有被定义成事件,则就会作为事件类型的Type值,否则将使用QEvent.User和 QEvent.MaxUser 之间(请参考《PyQt学习随笔:自定义Qt事件可以使用的事件类型的常量值范围》)还没有被注册事件的一个值. 如果 hint参数被指定且不介于QEvent.User和 QEvent.MaxUser 之间将被忽略。

2>如果程序已经关闭或者QEvent.User和 QEvent.MaxUser之间没有可用值则返回-1,否则返回返回事件对象的事件类型

与QEvent 相关的方法包括:QObject.event()、QObject.installEventFilter()、 QCoreApplication.sendEvent()、 QCoreApplication.postEvent()和 QCoreApplication.processEvents()。


博客地址:https://blog.csdn.net/LaoYuanPython

老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

PyQt学习随笔:Qt事件类QEvent详解的更多相关文章

  1. PyQt学习随笔:通过自定义类重写QApplication的notify方法捕获应用的所有消息

    PyQt程序通过调用QApplication类的exec_()(sys.exit(app.exec_()) 进入程序主循环,开始处理事件,它从事件队列中获取本地窗口系统事件,将它们转化为 QEvent ...

  2. 第15.28节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTableWidget详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 表格部件为应用程序提供标准的表格显示工具,在表格内可以管理基于行和列的数据项,表格中的最大 ...

  3. PyQt学习随笔:自定义Qt事件可以使用的事件类型的常量值范围

    除了<PyQt学习随笔:Qt事件QEvent.type类型常量及其含义资料速查>介绍的Qt已经定义的事件外,Qt还支持自定义事件. 为了方便起见,可以使用 registerEventTyp ...

  4. 第15.27节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTreeWidget详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(It ...

  5. PyQt学习随笔:Qt中Model/View中的怎么构造View匹配的Model

    老猿Python博文目录 老猿Python博客地址 在<PyQt学习随笔:Qt中Model/View相关的主要类及继承关系>介绍了Model/View架构的主要类,在实际使用时,view相 ...

  6. PyQt学习随笔:Qt Designer调用帮助时报错找不到assistant.exe文件的解决办法

    老猿是按照<第15.5节 PyQt5安装与配置>步骤安装的PyQt及相关工具,但最近在Qt Designer中点击帮助相关菜单时报错找不到assistant.exe文件,如图: 按照报错信 ...

  7. PyQt学习随笔:Model/View开发时从Model相关类派生自定义类需要注意的问题

    在<PyQt学习随笔:重写setData方法截获Model/View中视图数据项编辑的注意事项>介绍的方法,从Model相关类派生自定义类,通过重写setData方法以获取View中数据的 ...

  8. PyQt学习随笔:Model和View之间的数据互动过程

    在<PyQt学习随笔:Qt中tem Views(Model-Based)和Item Widgets(Item-Based)控件的用途和关系>中介绍了,Model用于存储数据,View用于展 ...

  9. PyQt学习随笔:Model/View开发时在view数据项中设置不同角色数据的方法

    在往Model中通过QStandardItem等类插入数据项时,除了实际插入的存储数据,还可以设置不同角色(请参考<PyQt学习随笔:Model/View中诸如DisplayRole的数据角色及 ...

随机推荐

  1. Python的Cmd模块的简易运用学习

    昨天大佬阿炳给发了一份代码给我,看着感觉很好玩,这是自己写了个命令行吗,完了我就找篇更详细一点的博客学习了一下  cmd的主要方法和属性 方法: (1)cmdloop():类似与Tkinter的mai ...

  2. C++ 数据结构 2:栈和队列

    1 栈 1.1 栈的基本概念 栈(stack)又名堆栈,它是一种 运算受限的线性表.限定 仅在表尾进行插入和删除操作 的线性表.表尾被称为栈顶,相对地,把另一端称为栈底. 1.1.1 特点 它的特殊之 ...

  3. jdk的动态代理和静态代理你还写不出来嘛???

    一.什么叫jdk的代理? 用另外一个对象去代理实际对象的操作 分为动态代理和静态代理二.先说说静态代理 从字面意思来看就是不会改变的,只可以代理某个固定对象的. 静态代理就是通过实现和目标对象实现的同 ...

  4. UNIX系统编程:文件IO(I)

    1.标准C库中访问文件用的是文件指针FILE *(stdin,stdout,stderr):对于linux系统编程而言,所有对设备或文件的操作都是通过文件描述符进行的 2.当打开或者创建一个文件的时候 ...

  5. [原题复现+审计][0CTF 2016] WEB piapiapia(反序列化、数组绕过)[改变序列化长度,导致反序列化漏洞]

    简介  原题复现:  考察知识点:反序列化.数组绕过  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 漏洞学习 数组 ...

  6. 运维自动化之1 - ansible 批量主机管理

    2000 - 2016 年,维护的小型机.linux刚开始的2台增加到上千台,手工检查.日常版本升级需要管理太多设备,必须通过运维自动化实现 特别是版本升级,需要到同类机器部署代码.起停设备,必须在一 ...

  7. FL Studio在线面板的作用

    FL Studio的在线面板主要是用来显示其自身与Image-Line公司相关的新闻.我们点击它后会看到一个新闻列表菜单,其中每一个项目都包含日期.标题.简介以及URL.详细的内容我们将在下文介绍,一 ...

  8. Guitar Pro指弹入门——特殊拍号

    在吉他演奏技术不断提高的同时,我们经常会遇到一些奇怪的曲谱.他们的拍号不是正常的4/4拍或者3/4拍,而是5/4或者5/8等等我们不太了解的拍号,致使我们在演奏和练习之中陷入纷乱的节奏. 那么本期文章 ...

  9. HMM、CTC、RNN-T训练是所有alignment的寻找方法

    1.1 LAS产生label的计算   LAS是可以看做能够直接计算给定一段acoustic feature时输出token sequences的概率,即\(p(Y|X)\),LAS每次给定一个aco ...

  10. Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合

    点波关注不迷路,一键三连好运连连! 先贴上几个案例,水平高超的同学可以挑战一下: 从员工集合中筛选出salary大于8000的员工,并放置到新的集合里. 统计员工的最高薪资.平均薪资.薪资之和. 将员 ...