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

Qt eventFilter 的信号处理

7
回复
7073
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2017-9-30 10:38:50 显示全部楼层 |阅读模式
1Qter豆
        大家好!
        个人对于信号处理机制的理解是,信号存储在信号队列中,先来的信号先执行,后来的信号后执行,类似于先进先出模式。
        但是本人在开发过程中碰到一个问题,是在 eventFilter 事件中,按钮按下事件触发后执行,但是在触发释放事件之后,又立即去处理释放事件,然后在处理完按下事件之后,再回来处理继续处理按下事件。

        以下是本人测试过程中的源代码和测试现象,并非开发源代码,对于其中的循环次数上希望各位不要纠结,我只是为了能看出实验为了能看出实验的效果罢了。

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:120 天
连续签到:1 天
2017-10-1 00:02:40 显示全部楼层
我认为,信号是因为事件发生了才被发送的,和事件有关系,而每个事件都在一个循环队列中【这个好像是事实】,当新事件发生时,加入队列,处理后出队
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2017-10-2 19:08:28 显示全部楼层
刚刚开始,不能解决问题,学习,帮顶
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-10-10 10:19:35 显示全部楼层
ShadowCry 发表于 2017-10-1 00:02
我认为,信号是因为事件发生了才被发送的,和事件有关系,而每个事件都在一个循环队列中【这个好像是事实】 ...

嗯,和我之前的想法类似,先入队的先处理,处理之后再出队。
可是在该测试过程中,先入队的还没有出队,后入队的处理完出队之后,再对先入队的处理出队,似乎有点不符合之前的思路。
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-10-10 10:20:40 显示全部楼层
wanchengbuyi 发表于 2017-10-2 19:08
刚刚开始,不能解决问题,学习,帮顶

谢谢,一起学习,努力
回复

使用道具 举报

累计签到:17 天
连续签到:2 天
2017-10-10 22:11:25 显示全部楼层
不加Msleep效果满足先进先出
加了Msleep不满足,是否和Msleep有关?我也是新学习,,刚学到event filter这里
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-10-18 08:52:09 显示全部楼层
yanweitom 发表于 2017-10-10 22:11
不加Msleep效果满足先进先出
加了Msleep不满足,是否和Msleep有关?我也是新学习,,刚学到event filter这里 ...

嗯,是和 msleep 有关,不同的 msleep 实现方式效果不一样
回复

使用道具 举报

累计签到:53 天
连续签到:1 天
2017-10-31 17:01:32 显示全部楼层
建议测试使用和GUI界面的事件无关的事件进行测试
比如自己定义一个事件,然后把时间加入到事件队列中,然后测试事件的入队和出队问题.

使用QEventLoop相当于在主事件中嵌套了子事件循环,而GUI的事件循环是可以穿透子事件循环的.
所以可以能会有问题,建议测试时候排除GUI事件!
回复

使用道具 举报

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

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