找回密码
 立即注册
收起左侧

请问这个event的父部件是谁?

4
回复
4860
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2019-8-25 16:42:23 显示全部楼层 |阅读模式
1Qter豆
在主窗口触发closeEvent事件时, void myWidget::closeEvent(QCloseEvent*event) 中通过语句 event->ignore() 选择忽略了该事件,那么该closeEvent事件继续传递给“父组件”,那这个父组件究竟是谁?是myWidget?
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

事件在组件之间的传递规则:是从子组件到父组件一层层传递,直到传递到顶级主窗口为终止,不在继续传递。如:QWidget窗口上放一个QGroupBox,其上放一个QSpinBox,当在SpinBox上按下鼠标左键,则此事件先传递给SpinBox组件,不处理则继续传递给GroupBox组件,仍然没处理则传递给主窗口,无论主窗口处理与否,都不在传递。 所以楼主的问题,closeEvent事件会传递给本级组件myWidget,无论处理与否都不会继续传给父组件。因为按楼主的 ...
回复

使用道具 举报

累计签到:19 天
连续签到:1 天
2019-8-25 16:42:24 显示全部楼层
事件在组件之间的传递规则:是从子组件到父组件一层层传递,直到传递到顶级主窗口为终止,不在继续传递。如:QWidget窗口上放一个QGroupBox,其上放一个QSpinBox,当在SpinBox上按下鼠标左键,则此事件先传递给SpinBox组件,不处理则继续传递给GroupBox组件,仍然没处理则传递给主窗口,无论主窗口处理与否,都不在传递。
所以楼主的问题,closeEvent事件会传递给本级组件myWidget,无论处理与否都不会继续传给父组件。因为按楼主的意思,这个myWidget应该是顶级主窗口,没有父组件。
对于“选择忽略了该事件,那么该closeEvent事件继续传递给父组件”这句话是从Qt帮助信息中翻译过来的。而且缺少了“可能”二字。
回复

使用道具 举报

累计签到:182 天
连续签到:1 天
2019-8-26 14:38:52 显示全部楼层
你这个主窗口是myWidget的窗口吧,是的话就是他自己
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2019-8-31 10:46:03 显示全部楼层
原来如此!初学Qt,请多多包涵,谢谢大神指点!
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2019-8-31 10:47:10 显示全部楼层
dtswy 发表于 2019-8-25 16:42
事件在组件之间的传递规则:是从子组件到父组件一层层传递,直到传递到顶级主窗口为终止,不在继续传递。如 ...

原来如此!初学Qt,请多多包涵,谢谢大神指点!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了