19.QT-事件发送函数sendEvent()、postEvent()
-阻塞型事件发送
- 需要重写接收对象的event()事件处理函数
 - 当事件发送后,将会立即进入event()事件处理函数进行事件处理
 - 通过sendEvent()静态函数实现阻塞发送:
 
- sendEvent()函数是阻塞式的,所以支持栈空间/堆空间事件对象的发送(局部对象和new分配的对象)
 - new分配的事件对象被处理后,会由Qt内部自动摧毁
 
-非阻塞型事件发送
- 需要重写接收对象的event()事件处理函数
 - 当事件发送后立即返回,事件将会发送到事件队列中等待处理
 - 通过postEvent()静态函数实现非阻塞发送:
 
- postEvent()函数是非阻塞式的,所以只能支持栈堆空间事件对象的发送(new分配的对象)
 - new分配的事件对象被处理后,会由Qt内部自动摧毁
 
Wiget.h
效果
 
自定义事件对象
- 自定义的事件类必须继承自QEvent,并且无需指定父类
 - 自定义的事件类必须拥有全局唯一的Type值,使用QEvent::User+value即可
 - 自定义事件类示例:
 
- 由于Qt不认识自定义事件,所以程序里需要提供处理自定义事件对象的方法
 
1.通过事件过滤器处理
- 通过installEventFilter()安装到目标对象
 - 在eventFilter()函数里处理事件
 
2.重写目标对象的event()函数
- 在event ()函数里处理事件
 
QStringEvent文件:
效果:
 
                    
                
                
            
        
浙公网安备 33010602011771号