码迷,mamicode.com
首页 > 其他好文 > 详细

Qt 事件机制

时间:2021-03-05 13:18:08      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:函数   需要   str   事件机制   调用   int   接收   功能   有一个   

1.1 Qt中的事件

1.1.1 事件的处理

Qt中处理事件的五种方法:
方法一:重新实现部件的paintEvent()、mousePressEvent()等事件处理函数。
方法二:重新实现notify函数。但它一次只能处理一个事件。这种方法需要继承QApplication类。
方法三:向QApplication对象上安装事件过滤器。每个程序只有一个QApplication对象,功能与notify类似,但可同时处理多个事件。需要使用全局的事件过滤器。
方法四:重新实现event()函数。其可以在事件到达默认的事件处理函数之前获得该事件。
方案五:在对象上安装事件过滤器。使用事件过滤器可以在界面类中同时处理不同子部件的不同事件。
最常见的是方法一方法五

1.1.2 事件的传递

每个程序main()函数的最后都会调用QApplication类的exec()函数,它会使Qt应用程序进入事件循环,然后应用程序在运行时会接收发生的各种事件。一旦有事件发生,Qt会构建相应的QEvent子类的对象来表示它,然后将它传递给相对应的Qobject对象或者其子对象。

具体的例子可以参考霍亚飞的Qt快速入门第三版6-2源码。
技术图片
结论是,事件的传递顺序是这样的:先是事件过滤器,然后是焦点部件的event()函数,最后是焦点部件的事件处理函数;如果焦点部件忽略了该事件,就执行父部件的事件处理函数。注意,event()函数和事件处理函数是在焦点部件内部定义的,而事件过滤器却是在焦点部件的父部件中定义的。
技术图片

Qt 事件机制

标签:函数   需要   str   事件机制   调用   int   接收   功能   有一个   

原文地址:https://www.cnblogs.com/wsl540/p/14482048.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!