Qt中父子widget的事件传递
来源:互联网 发布:java分割符 编辑:程序博客网 时间:2024/06/07 17:42
以前我一直以为:在父widget上摆一个子widget后,当click子widget时:只会进入到子widget的相关事件处理函数中,比如进入到mousePressEvent()中, 而不会进入到父widget的对应事件处理函数中。毕竟:click的是子widget,其遮挡住了父widget,从而父widget接收不到这个事件。然而事实真的是这个样子吗?
我做了一个测试: 在一个QWidget上建了一个QLabel。而后实现父QWidget的mousePressEvent(), 然后跟一下发现:当我click这个label时:居然能进入到父QWidget的mousePressEvent()中!但是如果把子改成QPushButton则进入不了!
咨询了一下别人,得到的答案是:如果子widget没有accept或ignore该事件,则该事件会被传递给其父窗口。
事实也确实如此:
①对于QLabel: 如果不重写mouse处理函数,也没有设置事件过滤器等操作的话,则相当于:其对mouse这个事件一直没有进行处理,那没有进行处理的话,相当于上边所说的情况,此时该事件会被传递给其parent。
②而对于QPushButton而言:当click它时:其会发射clicked()信号,其实这就相当于它对该事件的一个operator过程。所以:这里它accept该事件并进行了对应处理。从而:无法传递给其父窗口。
那么:对于一个继承而来的类,只要我们重写实现了其各个事件处理函数,则对应的事件肯定无法传递给其父widget! 哪怕重写的该事件处理函数的函数体为空!
如果是标准的控件对象,则其肯定没重写各个事件处理函数。那消息能不能传递到父widget中,则取决于中途有没有使用事件过滤器等将该信号拦截下来了。
FROM: http://www.cnblogs.com/King-Gentleman/p/5838404.html- Qt中父子widget的事件传递
- Qt中父子widget的事件传递
- Qt中父子widget的消息传递
- QT的父子Widget之间消息的传递
- Qt Widget重叠放置和兄弟Widget的事件传递
- QT父子窗口事件传递与事件过滤器
- QT父子窗口事件传递与事件过滤器
- QT父子窗口事件传递与事件过滤器
- QApplication向widget 传递的事件循序
- angular2中父子组件的数据传递
- 猫猫学iOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
- AJ学IOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
- iOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
- QT中 widget window dialog 的区别
- vs2010+qt+widget+右键事件
- Qt的事件和与Widget跨线程交互
- vue-cli中父子组件间的变量传递
- 父子页面的信息传递
- java常用小方法
- Python学习笔记(四)
- KeyGenerator加解密在windows和linux的同步
- 将nodejs-express配置成全局可用状态
- Spring Boot+Mybatis动态数据源配置
- Qt中父子widget的事件传递
- java String类的字符串常量不可变更
- java 字节转为16进制字符的个人理解
- 传输层协议之传输控制协议(TCP)总结
- 10 Minutes to pandas
- ssh更改端口
- 矩阵旋转
- 单例模式C++
- Android面试相关