Qt修改mousemove事件的触发频率

mousemove事件无法直接设置触发频率,这取决于操作系统底层的响应速度。
只能采取间接的方法,如定时器的方法。但定时器太麻烦了,可以采用以下思路:
程序内定义一个计数器,每进入一次mouseMoveEvent事件计数器加1,只有到达阈值才触发一次处理代码,并将计数器清零。
代码

class myWidget:public QWidget
{
...
protected :
virtual void mouseMoveEvent(QMouseEvent *ev) override
{
	// 此处进行非耗时或必须实时刷新的操作
	...

	sensitivity = 20;
	if (delay_cnt < sensitivity)
	{
		delay_cnt++;
		return;
	}
	if (delay_cnt == sensitivity)   //循环计数
		delay_cnt = 0;
	delay_cnt++;

	// 此处进行耗时操作,通过修改sensitivity来适应耗时操作所需的触发频率
	//! 此处最好通过信号槽扔到子线程内执行,避免阻塞前面的非耗时操作
	...
}

private:
	int sensitivity;  //触发灵敏度,改鼠标移动事件的触发频率,值越大频率越低
	int delay_cnt;   //鼠标移动事件触发计数器
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值