Qt下限制鼠标移动范围(简单方法)

原因:因为我在设计一个鼠标指针限制的范围,用了Qt的方法但是效果不好,所以记录汇总一下

初始化时候调用Winodws API 限制鼠标范围

(根据分辨率进行判断,所以屏幕尺寸发生变化,下面的也会发生变化)

头文件

#include "mainwindow.h"
#include <qapplication>
#include <windows.h>
#include <windef.h>

构造函数

RECT mainWinRect;
mainWinRect.left = 左+ 3;
mainWinRect.right = 左 + 窗口宽;
mainWinRect.top = 上+ 33;
mainWinRect.bottom = 上 + 窗口高;
ClipCursor(&mainWinRect);

左 /上:分别代表坐标(可以通过截图然后鼠标移动就能看到具体坐标)

3和33是余量,稍微把窗口缩小一点碰不到边缘,就一直是鼠标的效果(这个值可以根据自己的需求进行修改,另外由于是固定窗口坐标,所以无法拖拽,也可以避免拖拽后导致限制范围和窗口对不上问题)

如果没有余量的话就是下图的效果,所有有一点会更好看

析构函数-关闭界面的时候释放

ClipCursor(NULL);

但是像ESC之类的按钮需要禁用或者ClipCursor()清掉,不然仍然会被限制在窗口里面

bool Class_A::eventFilter(QObject* obj, QEvent* event) {
	Class_A* p_Class = qobject_cast<Class_A*>(obj);
	if (p_Class != NULL)
	{
		switch (event->type()){
		case QEvent::KeyPress:
			QKeyEvent* p_keyevent = static_cast<QKeyEvent*>(event);
			if (p_keyevent->key()==Qt::Key_Escape){
				return true;
			}
		}
	}
	return QObject::eventFilter(obj, event);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值