魔方网表 让信息化更简单

 找回密码
 注册
查看: 9167|回复: 6

在Qt程序窗口上点击任意区域移动窗体(整理)

[复制链接]
admin 发表于 2008-11-18 20:11:00 | 显示全部楼层 |阅读模式
在Qt程序窗口上点击任意区域移动窗体

方法是截取组件Widget的鼠标事件函数,自己处理鼠标点击和移动的事件.

Void MyWidget::mouseMoveEvent(QmouseEvent *e)
{
Qpoint newpos=e->globalPos();//获得鼠标相对于屏幕坐标系的位置
Qpooint upLeft=pos0+newpos-last;
Move(upLeft);
}

Void MyWidget::mousePressEvent(QmouseEvent *e)
{
last=e->globalPos();//获得鼠标相对于屏幕坐标系的位置
pos0= e->globalPos()-e->pos();
}

解释:
e->globalPos(); //获得鼠标相对于屏幕坐标系的位置
e->pos(); //鼠标相对于窗体左上角的位置
pos0; //窗体左上角的位置
upLeft; //新的窗体左上角的位置

这里,我们取得的鼠标位置是绝对位置,即相当于窗口的位置,同时也记录下窗体左上角的位置,当鼠标移动时,取得新的绝对位置,则窗口做上角的新位置应该时原来位置与鼠标移动的位置之差.

Junglesong 编辑整理
2004-1-21
 楼主| admin 发表于 2011-2-11 13:00:58 | 显示全部楼层
回复

使用道具 举报

 楼主| admin 发表于 2011-3-24 19:54:09 | 显示全部楼层
ding
回复

使用道具 举报

hkaih 发表于 2012-3-19 22:40:42 | 显示全部楼层
永远支持楼主,继续发好贴
回复

使用道具 举报

wohenban168 发表于 2012-3-22 14:07:38 | 显示全部楼层
楼主辛苦了,非常感谢!
回复

使用道具 举报

1897052670 发表于 2013-4-6 20:00:49 | 显示全部楼层
哈哈,有意思。












黑松剪枝
回复

使用道具 举报

你马子有我闹吗 发表于 2014-5-22 07:34:31 | 显示全部楼层
楼主你太好了.........
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|魔方软件 ( 京ICP备08008787号 )

京公网安备 11010702001722号

GMT+8, 2024-4-20 12:53 , Processed in 0.068994 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表