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

QT子控件接收并处理鼠标事件时如何通知父控件触发了哪个...

2
回复
5721
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2018-10-19 11:42:06 显示全部楼层 |阅读模式
1Qter豆
QT子控件接收并处理鼠标事件时如何通知父控件触发了哪个子控件的鼠标事件?
例子就是单击子控件,子控件执行鼠标单击,同时把子控件的指针发给父控件的某个变量,然后父控件改变子控件的状态(如位置信息)

我现在使用的是信号槽实现的,点击同时emit一个信号,把自己发给父控件,这个方法聚合性太强了,所以来问问有没有更厉害的方法

回复

使用道具 举报

累计签到:41 天
连续签到:1 天
2018-10-19 15:35:38 显示全部楼层
您可以尝试使用接口类(依赖倒置)的方法。具体来说,看您的消息是否可以进行抽象,比如设计一个抽象类CMsgInterface。并且为其提供一些您的业务所需的接口:比如获取鼠标坐标,获取尺寸等等。这些接口要定义为纯虚的。然后您在CMsgInterface的基础上派生所需的类,emit消息时使用CMsgInterface定义对象,但是指向new出来的派生类对象,接收方也用CMsgInterface,所以connect时也是用CMsgInterface。供参考。
回复

使用道具 举报

累计签到:11 天
连续签到:3 天
2019-1-31 15:11:42 显示全部楼层
如果你要将控制权给到父控件,你为什么要子控件去处理鼠标事件呢?直接父控件处理,然后通过坐标转换判断鼠标在哪一个控件上然后处理你的逻辑
回复

使用道具 举报

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

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