• 8839阅读
  • 9回复

如何将鼠标移动区域限制在当前窗口内? [复制链接]

上一主题 下一主题
离线kerry_wei
 
只看楼主 倒序阅读 楼主  发表于: 2010-03-19
  请问下,弹出一个模态对话框后,如何将鼠标移动区域限制在当前窗口内??
离线benbenmajia

只看该作者 1楼 发表于: 2010-03-19
自己写一个过滤器
安然.....
离线kerry_wei
只看该作者 2楼 发表于: 2010-03-19
是在该窗口的父窗口中写过滤器么?
离线kerry_wei
只看该作者 3楼 发表于: 2010-03-19
我重写了mousemoveevent();    就是判断当鼠标移动的x,y超过窗口的width和height或<0时,就用QCursor::setpos移动到边界处, 但是这样处理,当鼠标移动到区域外时,光标会跳跃;
离线kerry_wei
只看该作者 4楼 发表于: 2010-03-19
哈哈 重写mouseMoveEvent成功实现~~
离线kerry_wei
只看该作者 5楼 发表于: 2010-03-19
还有一个疑问,就是当鼠标左键按下,拖动时mouseMoveEvent 才会响应,那如何响应左键没有按下,移动的操作???
离线午小夜

只看该作者 6楼 发表于: 2010-03-19
If mouse tracking is disabled (the default), the widget only receives mouse move events when at least one mouse button is pressed while the mouse is being moved.

If mouse tracking is enabled, the widget receives mouse move events even if no buttons are pressed.

Access functions:

bool    hasMouseTracking () const
void    setMouseTracking ( bool enable )
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线sadever
只看该作者 7楼 发表于: 2010-03-20
顶版主,楼主也分析下代码啊
离线kerry_wei
只看该作者 8楼 发表于: 2010-03-22
找到原因了  我获取pos使用的函数是event->pos,那么当鼠标移到当前窗口外时,mouseMoveEvent里面就无法响应了,改用this->pos就可以实现了;

但是别人建议我用更简单的方法实现, 他说MFC下可以直接将当前窗口设置为鼠标的父窗口,就可以限制鼠标移动区域了,不知道QT下有没有类似的实现方法呢?
离线benbenmajia

只看该作者 9楼 发表于: 2010-03-22
不太清楚,MFC那是框架,QT不一样
安然.....
快速回复
限100 字节
 
上一个 下一个