博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT 学习 之 窗口拖拽 实现
阅读量:6368 次
发布时间:2019-06-23

本文共 982 字,大约阅读时间需要 3 分钟。

最基本的就是计算三个值,一个定值,鼠标相对于窗口左上角的坐标,两个变值,一个是鼠标在屏幕上的绝对坐标以及窗口左上角的绝对坐标。在一次移动中鼠标相对于窗口左上角的坐标是不变,所以可以根据它来计算串窗口移动后的坐标。

代码如下:

.h 文件应该添加的函数

void mouseMoveEvent(QMouseEvent *event);void mousePressEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent *event);QPoint mouse_relative_pos;

.cpp 文件实现

void Widget::mouseMoveEvent(QMouseEvent *event){    QPoint mouse_global_pos = event->globalPos();  //取到鼠标的绝对位置    QPoint window_top_left = this->geometry().topLeft();  //取到窗口左上角的绝对位置    QPoint move_point = mouse_global_pos - mouse_relative_pos;  //得到窗口左上角的绝对位置    this->move(move_point);}void Widget::mousePressEvent(QMouseEvent *event){    QPoint mouse_global_pos = event->globalPos();    QPoint window_top_left = this->geometry().topLeft();    mouse_relative_pos =  mouse_global_pos - window_top_left;  //得到鼠标相对于窗口左上角的坐标,移动时,这个值是一直不变的}void Widget::mouseReleaseEvent(QMouseEvent *event){    mouse_relative_pos.setX(0);    mouse_relative_pos.setY(0);}

转载于:https://blog.51cto.com/11753138/2409644

你可能感兴趣的文章
MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?
查看>>
UNIX 高手的 10 个习惯
查看>>
传值与传引用
查看>>
HDU 1538 A Puzzle for Pirates(海盗分金问题)
查看>>
C# Web Forms - Using jQuery FullCalendar
查看>>
H5移动端知识点总结
查看>>
Sublime-Text-2-pydocstring --- 自动生成python docstring的插件
查看>>
UNIX进程环境
查看>>
学习面试题Day03
查看>>
我最喜欢的jQuery插件模板
查看>>
【云计算】Docker 多进程管理方案
查看>>
[LeetCode] Best Meeting Point 最佳开会地点
查看>>
基于InstallShield2013LimitedEdition的安装包制作
查看>>
【转】从Shell脚本内部将所有标准输出及标准错误显示在屏幕并同时写入文件的方法...
查看>>
iOS开发小技巧--利用MJExtension解决数据结构复杂的模型转换
查看>>
Python中的图形库
查看>>
Linux操作系统分析 ------------------中国科技大学
查看>>
Apache多站点实现原理和配置
查看>>
javascript类型系统——包装对象
查看>>
Android4.4中不能发送SD卡就绪广播
查看>>