自定义QT事件
1、事件ID
本质上就是一个整型值。0-999作为系统保留字段,自定义事件从QEvent::User(也就是1000)开始,
例如:
#define MY_EVENT QEvent::User+100
大部分情况下自定义事件是不会冲突的,如果我们还引入了其他库,也不完全能确保如此,最好的方式就是通过系统事件获取事件ID。
static int QEvent::registerEventType ( int hint = -1 );
注册并返回一个用户自定义事件,如果hint对应的事件可用,则直接返回hint作为事件ID,否则,返回一个可用的事件ID;
2、事件数据
我们可以通过从QEVENT派生,自定义事件所关联的数据;
class QMyEvent : public QEVENT
3、事件发送
两种方式:
1、同步发送static bool QCoreApplication::sendEvent(QObjecy * receiver, QEvent * event):
QMyEvent event;
QApplication::sendEvent(receiver, &event );
同步发送的事件是立即发送给receiver对象执行,返回值也就是事件处理后的返回值,所以event可以是栈变量;
2、异步发送static bool QCoreApplication::postEvent(QObject * receiver, QEvent * event):
QMyEvent* event = new QMyEvent();
QApplication::postEvent(receiver, event );
异步事件是向receiver对象的事件队列投递事件(添加到末尾),投递后立即返回;
4、事件处理
1、重载event函数
void QObject::event(QEvent* event)
2、重载CustomEvent;
void QObject::customEvent(QEvent* event)
3、通过EventFilter处理;
自定义QT事件的更多相关文章
- PyQt学习随笔:自定义Qt事件可以使用的事件类型的常量值范围
除了<PyQt学习随笔:Qt事件QEvent.type类型常量及其含义资料速查>介绍的Qt已经定义的事件外,Qt还支持自定义事件. 为了方便起见,可以使用 registerEventTyp ...
- PyQt学习随笔:Qt事件类QEvent详解
QEvent类是PyQt5.QtCore中定义的事件处理的基类,事件对象包含了事件对应的参数. <Python & PyQt学习随笔:PyQt主程序的基本框架>介绍了PyQt程序通 ...
- QT事件
qtevents多线程工作object存储 Another Look at Events(再谈Events) 最近在学习Qt事件处理的时候发现一篇很不错的文章,是2004年季刊的一篇文章,网上有这篇文 ...
- 自定义Qt按钮
转自:http://blog.csdn.net/starcloud_zxt/article/details/5185556 Qt自带的PushButton样式比较单一,在开发的时候往往按钮的形状各异, ...
- Qt 事件机制
[1]事件 事件是可以被控件识别的操作.如按下确定按钮.选择某个单选按钮或复选框. 每种控件有自己可识别的事件,如窗体的加载.单击.双击等事件,编辑框(文本框)的文本改变事件等等. 事件就是用户对窗口 ...
- 【转】QT事件传递与事件过滤器
[概览] 1.重载特定事件函数. 比如: mousePressEvent(),keyPressEvent(), paintEvent() . 2.重新实现QObject::ev ...
- [GUI] QT事件与X11的关系
做了一段时间linux下与QT事件相关的工作,经常会遇到X11,总是苦于无法完全理解其与linux以及QT事件之间的关系,所以用两篇文章来简单总结下linux中的图形管理和QT事件与X11的关系. & ...
- 自定义QT窗口部件外观之QStyle
自定义QT窗口部件外观 重新定义Qt内置窗口部件的外观常用的方法有两种:一是通过子类化QStyle 类或者预定义的一个样式,例如QWindowStyle,来定制应用程序的观感:二是使用Qt样式表. Q ...
- qt事件机制(转)
学习了一段时间的Qt之后,发现Qt的事件机制和其他语言的机制有些不同.Qt除了能够通过信号和槽机制来实现一些Action动作之外,还可以用对象所带的事件,或者用户自定义的事件来实现对象的一些行为处理. ...
随机推荐
- Windows 内核(WRK)编译
引子 WRK 是微软于 2006 年针对教育和学术界开放的 Windows 内核的部分源码, WRK(Windows Research Kernel)也就是 Windows 研究内核, 在 WRK 中 ...
- Document字段发生变化后,报的错
2016-10-11 15:27:47,828 [ERROR] [main] SpringApplication:838 - Application startup failedorg.springf ...
- CreateObject("Wscript.Shell")用法
WScript.Shell是WshShell对象的ProgID,创建WshShell对象可以运行程序.操作注册表.创建快捷方式.访问系统文件夹.管理环境变量. 该对象有一个run方法. Run 方法创 ...
- php Magic methods __call
<?php class Car{ protected $_color; protected $_model; public function __call($name,$arguments){ ...
- perl 正则匹配多个
Vsftp:/root# cat k1.pl my $_='upDaTe'; if( $_ =~ /^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK| ...
- 【HDOJ】3957 Street Fighter
一定要注意审题啊,题目说的是选出做少的英雄打败其余处在任何模式下的英雄.共有Sigma(num of model)个方案,每个方案有Sigma(num of model)+n个决策.挺不错的一道精确覆 ...
- 【原创】MIPS·Verilog·FPGA
时至今日,终于将全部的计划55条MIPS指令在FPGA上全部验证完毕,通过这近一个月的不断的修改调试.修改调试,我对整个流程对MIPS有了深刻的体会和认识.借着刚刚现阶段任务的兴奋和短暂的空闲时间,将 ...
- FRM-40401 No changes to save error
FAQ: I have updated a table from the form and written a update statement in the when-button-pressed ...
- Oracle系列之包
涉及到表的处理请参看原表结构与数据 Oracle建表插数据等等 建包 -- 建立包头 create package mypkg is procedure set_ctx(p_name in varc ...
- 用if else 判断是不是7的倍数等
static void Main(string[] args) { while (true) { int b; ...