Qt全局坐标和相对坐标
QMouseEvent中两类坐标系统,一类是窗口坐标,一类是显示器坐标。
| QPoint QMouseEvent::pos() | 返回相对这个widget(重载了QMouseEvent的widget)的位置 |
| QPoint QMouseEvent::globalPos() | 窗口坐标,这个是返回鼠标的全局坐标 |
| QPoint QCursor::pos() [static] | 返回相对显示器的全局坐标 |
| QPoint QWidget::mapToGlobal(const QPoint & pos) const | 将窗口坐标转换成显示器坐标 |
| QPoint QWidget::mapFromGlobal(const QPoint & pos) const | 将显示器坐标转换成窗口坐标 |
| QPoint QWidget::mapToParent(const QPoint & pos) const | 将窗口坐标获得的pos转换成父类widget的坐标 |
| QPoint QWidget::mapFromParent(const QPoint & pos) const | 将父类窗口坐标转换成当前窗口坐标 |
| QPoint QWidget::mapTo(const QWidget * parent, const QPoint & pos) const | 将当前窗口坐标转换成指定parent坐标 |
| QWidget::pos() : QPoint | 这个属性获得的是当前目前控件在父窗口中的位置 |
8、const QPointF & QMouseEvent::screenPos() const
Returns the position of the mouse cursor as a QPointF, relative to the screen that received the event.
和QPoint QMouseEvent::globalPos() 值相同,但是类型更高精度的QPointF
This function was introduced in Qt 5.0.
总结一:经过试验,QMouseEvent::globalPos() 和 QCursor::pos()效果一样,但是Qt帮助文档说不一样,可是我获得值确实相同的。
QCursor::pos() == QMouseEvent::globalPos() 都是全局坐标;
总结二:将button:posBtn直接转换成全局坐标。
QMouseEvent::globalPos() == ui.posBtn->mapToGlobal(ui.posBtn->pos());
总结三:将全局坐标(鼠标当前坐标,QCursor::pos())直接转换成当前
当前窗口相对坐标 == ui.posBtn->mapFromGlobal(QCursor::pos());
如下图:
上面的mouseEvent.globalPos()和QCursor::pos()永远相同,都是全局坐标。
上面绿色按钮的当前坐标:ui.pushButton->pos() 、转换父窗口坐标后mapToParent()、转换成全局坐标后mapToGlobal();
如果当前鼠标坐标摸到按钮,按钮上面的文字发生变化,经过比较。
确实得到:QCursor::pos() == ui.posBtn->mapFromGlobal(QCursor::pos());
转载地址:http://jingyan.baidu.com/article/48206aeaffc02c216ad6b31d.html
Qt全局坐标和相对坐标的更多相关文章
- 网络游戏开发-客户端4 关于Egret的本地坐标和舞台坐标
因为最近公司事情比较多,所以没怎么更新博客. 不过咱们这个游戏还是在继续往下写. 今天晚上打算写斗地主的出牌动画,遇到一个问题,就是关于本地坐标和舞台坐标的计算问题 在Egret官网的解释是:x 和 ...
- 火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版
火星坐标 火星坐标是国家测绘局为了国家安全在原始坐标的基础上进行偏移得到的坐标,基本国内的电子地图.导航设备都是采用的这一坐标系或在这一坐标的基础上进行二次加密得到的.火星坐标的真实名称应该是GCJ- ...
- 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换(JS版代码)
/** * Created by Wandergis on 2015/7/8. * 提供了百度坐标(BD09).国测局坐标(火星坐标,GCJ02).和WGS84坐标系之间的转换 */ //定义一些常量 ...
- iOS开发 火星坐标转百度坐标
CLLocationCoordinate2D coor = CLLocationCoordinate2DMake(latitude, longitude);//原始坐标 //转换 google地图.s ...
- GPS坐标换算为百度坐标
最近在做一个关于手机定位的小应用,需求是这样的,用户通过手机(Wp8)进行二维码扫描操作并且记录用户的当前位置,在PC上可以查看用户所在地图的位置,做法就是在用户扫描条码时,通过手机GPS获取当前在地 ...
- 地图坐标转换 -- 火星坐标与GPS坐标
第一次处理地理位置的数据的人,没什么经验,往往掉入很多坑浪费不少时间.我也是刚刚从坑里爬出来.这篇博文主要是把入门GPS轨迹分析的经验总结一下,以方便大家少走些弯路. (1)可视化 GPS 路径 刚拿 ...
- WGS84、Web墨卡托、火星坐标、百度坐标互转
转自:1.http://blog.csdn.net/wildboy2001/article/details/12031351 2.http://kongxz.com/2013/10/wgs-cgj/ ...
- ArcGIS Engine 下投影坐标和经纬度坐标的相互转换
ArcGIS Engine 下投影坐标和经纬度坐标的相互转换 投影转经纬度 ); pPoint.Project(pSRF.CreateGeographicCoordinateSystem((int)e ...
- ArcEngine下投影坐标和经纬度坐标的相互转换
jojojojo2002 原文 ArcEngine下投影坐标和经纬度坐标的相互转换 投影转经纬度 private IPoint PRJtoGCS( double x, double y) { IPoi ...
- 火星02坐标转换为WGS84坐标
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import jav ...
随机推荐
- Django传递数据给JS
这里讲述两种方法: 一,页面加载完成后,在页面上操作,在页面上通过 ajax 方法得到新的数据(再向服务器发送一次请求)并显示在网页上,这种情况适用于页面不刷新的情况下,动态加载一些内容.比如用户输入 ...
- 关闭tomcat8080端口
netstat -ano | findstr 8080taskkill /F /PID 1234
- CF796D Police Stations BFS+染色
题意:给定一棵树,树上有一些点是警察局,要求所有点到最近的警察局的距离不大于 $d$,求最多能删几条边 ? 题解: 考虑什么时候一条边可以被断开:这条边的两个端点被两个不同的警察局覆盖掉. 我们要设计 ...
- Codeforces 1221 F Choose a Square
题面 不知道大佬们怎么想的,反正我看到这种区间包含性质的并且score只和包含的区间与询问区间挂钩的题,马上就想到了扫描线23333 虽然革命方向无比正确,但却因为SB错误交了5次才 A. WA第一发 ...
- Try-Catch-Finally代码块中的return
测试类的原型是这样子的 public class TryCatchFinallyToReturn { public static void main(String[] args) { System.o ...
- [crontab]修改默认编辑器
crontab默认编辑器为nano,超级不好用 想要修改成vim或者其他编辑器,方法如下. sudo select-editor 改为3或者4 再次打开就直接是vim打开了
- 从 10.x 到 ArcGIS Pro 的 Python 迁移
与 ArcGIS Pro 结合使用 Python 的方式与包括 ArcGIS Desktop.ArcGIS Server 以及 ArcGIS Engine 在内的其他 ArcGIS 产品不同. 地理处 ...
- Flutter移动电商实战 --(16)切换后页面状态的保持AutomaticKeepAliveClientMixin
底栏切换每次都重新请求是一件非常恶心的事,flutter 中提供了AutomaticKeepAliveClientMixin 帮我们完成页面状态保存效果. 1.AutomaticKeepAliveCl ...
- kafka 基本原理简介
Kafka是啥?用Kafka官方的话来说就是: Kafka is used for building real-time data pipelines and streaming apps. It i ...
- 记录linux 生成crash dump文件步骤
执行文件编译时加入-g 命令 例如 g++ -g test.cpp 查看当前系统限制情况 ulimit -a 设置crash dump 文件大小 ulimit -c unlimited unlimit ...