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的数据角色及 ...
随机推荐
- leetcode7:binary-tree-preorder-traversal
题目描述 求给定的二叉树的前序遍历. 例如: 给定的二叉树为{1,#,2,3}, 1 \ 2 / 3 返回:[1,2,3]. 备注:用递归来解这道题太没有新意了,可以给出迭代的解法么? ...
- Shell 教程01
Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个 ...
- Python正则表达式-换行的匹配
找到了之前参考的博文,用来记录一下https://www.cnblogs.com/baxianhua/p/8572805.html 平常 点 (.)去匹配任意字符的时候,是不能匹配换行符的 匹配换行: ...
- Effective Modern C++ ——条款5 优先选择auto,而非显式型别声明
条款5 对于auto ,他的好处不仅仅是少打一些字这么简单. 首先在声明的时候, 使用auto会让我们养成初始化的习惯: auto x;//编译不通过必须初始化. 再次对于auto而言,它可以让我们定 ...
- GSO和TSO
http://www.cnhalo.net/2016/09/13/linux-tcp-gso-tso/ TSO(TCP Segmentation Offload): 是一种利用网卡来对大数据包进行自动 ...
- 当年使用dpdk干的事
mark一下 晚点上传 先不上传 ....0727
- 手写atoi、strcpy、strcat
一:实现atoi函数 1 #include<iostream> 2 3 using namespace std; 4 5 int atoi_my(const char *str) 6 { ...
- 基于FFmpeg的Dxva2硬解码及Direct3D显示(一)
目录 前言 名词解释 代码实现逻辑 前言 关于视频软解码的资料网上比较多了,但是关于硬解可供参考的资料非常之有限,虽然总得来说软解和硬解的基本逻辑一样,但是实现细节上的差别还是比较多的.虽然目前功能已 ...
- 年轻人不讲武德来白piao我这个老同志
朋友们好啊,我是码农小胖哥. 今天有个同学问我在吗,我说什么事? 给我发个截图,我一看!噢,原来是帮忙搞个定时任务,还是动态的. 他说了两种选择,一种是用DelayQueue,一种是用消息队列. 他说 ...
- Linux 文本处理批量查找与替换
# 搜索含有特定字符串在某个目录并打印出文件名grep -rl "www.baidu.com" /data* -r, --recursive like --directories= ...