PyQt学习随笔:Qt事件类QEvent详解
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详解的更多相关文章
- PyQt学习随笔:通过自定义类重写QApplication的notify方法捕获应用的所有消息
PyQt程序通过调用QApplication类的exec_()(sys.exit(app.exec_()) 进入程序主循环,开始处理事件,它从事件队列中获取本地窗口系统事件,将它们转化为 QEvent ...
- 第15.28节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTableWidget详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 表格部件为应用程序提供标准的表格显示工具,在表格内可以管理基于行和列的数据项,表格中的最大 ...
- PyQt学习随笔:自定义Qt事件可以使用的事件类型的常量值范围
除了<PyQt学习随笔:Qt事件QEvent.type类型常量及其含义资料速查>介绍的Qt已经定义的事件外,Qt还支持自定义事件. 为了方便起见,可以使用 registerEventTyp ...
- 第15.27节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTreeWidget详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(It ...
- PyQt学习随笔:Qt中Model/View中的怎么构造View匹配的Model
老猿Python博文目录 老猿Python博客地址 在<PyQt学习随笔:Qt中Model/View相关的主要类及继承关系>介绍了Model/View架构的主要类,在实际使用时,view相 ...
- PyQt学习随笔:Qt Designer调用帮助时报错找不到assistant.exe文件的解决办法
老猿是按照<第15.5节 PyQt5安装与配置>步骤安装的PyQt及相关工具,但最近在Qt Designer中点击帮助相关菜单时报错找不到assistant.exe文件,如图: 按照报错信 ...
- PyQt学习随笔:Model/View开发时从Model相关类派生自定义类需要注意的问题
在<PyQt学习随笔:重写setData方法截获Model/View中视图数据项编辑的注意事项>介绍的方法,从Model相关类派生自定义类,通过重写setData方法以获取View中数据的 ...
- PyQt学习随笔:Model和View之间的数据互动过程
在<PyQt学习随笔:Qt中tem Views(Model-Based)和Item Widgets(Item-Based)控件的用途和关系>中介绍了,Model用于存储数据,View用于展 ...
- PyQt学习随笔:Model/View开发时在view数据项中设置不同角色数据的方法
在往Model中通过QStandardItem等类插入数据项时,除了实际插入的存储数据,还可以设置不同角色(请参考<PyQt学习随笔:Model/View中诸如DisplayRole的数据角色及 ...
随机推荐
- Pyston v2.0 发布,解决 Python 慢速的救星
Pyston 自从 2017 年发布 0.6.1 版本后,已经淡出了人们的视线三年多了,导致现在新人都很少听过它的大名. 前两天(2020年10月28日)Pyston 在官方博客上(https://b ...
- Java 实现输入公历日期输出农历日期、生肖、天干地支、节日、节气等信息
最近的工作中客户要求前台页面展示日历,日历内容包括:农历年月日日.公历年月日.生肖.天干地支.农历节日.公历节日.24节气等信息,之前在网上查找资料关于Java实现方面的文章不少,但是大多数针对节气. ...
- seaborn库中柱状图绘制详解
柱状图用于反映数值变量的集中趋势,用误差线估计变量的差值统计.理解误差线有助于我们准确的获取柱状图反映的信息,因此打算先介绍一下误差线方面的内容,然后介绍一下利用seaborn库绘制柱状图. 1.误差 ...
- Python基础数据类型与for循环
数据类型:int,bool,str,list, tuple元组,dict字典. 1.数字:12,3,4 在使用print打印数字时,在终端界面中无法判断出打印的是什么类型,当我们需要知道一个值是什么类 ...
- Spring Cloud Security OAuth2.0 认证授权系列(一) 基础概念
世界上最快的捷径,就是脚踏实地,本文已收录[架构技术专栏]关注这个喜欢分享的地方. 前序 最近想搞下基于Spring Cloud的认证授权平台,总体想法是可以对服务间授权,想做一个基于Agent 的无 ...
- App安全常见漏洞修复建议
ios开发对自己的app做一系列的环境检测 检测Cydia是否安装 检测app是否可以编辑系统文件 检测系统是否包含可疑的文件 检测是否有可疑的app安装如:FakeCarrier, Icy, etc ...
- centos虚拟机配置网络
首先想用xshell链接虚拟机,发现没有联网, 首先打开Windows下的服务 将虚拟机的网络设置为net模式 centos的网卡默认是关闭的,需要手动打开,首先进入这个目录 用vim打开ifcfg- ...
- 【转】Java工程师知识图谱
一.Java工程师知识图谱(思维导图版) 二.Java工程师知识图谱(文字链接版) 专业基石 数据结构 数组 链表 队列 栈 哈希表 堆 树 图 BitMap 算法思想 排序 查找 分支算法 动态规划 ...
- .Net orm 开源项目 FreeSql 2.0.0(满意的答卷)
写在开头 2018年11月头脑发热到今天,一晃已经两年,当初从舒服区走向一个巨大的坑,回头一看后背一凉. 两年时间从无到有,经历数不清的日夜奋斗(有人问花了多长时间投入,答案:全职x2 + 两年无休息 ...
- ABBYY FineReader 15高级转换功能详解
ABBYY FineReader 15(Windows系统)OCR文字识别软件拥有强大的OCR项目功能,能帮助用户检查识别区域.验证识别出的文本.预处理图像以提高 OCR精确性等等.其强大的OCR微调 ...