多语言展示
当前在线:146今日阅读:168今日分享:49

Qt的坐标学习总结

首先:QMouseEvent中两类坐标系统,一类是窗口坐标,一类是显示器坐标。
工具/原料
1

qt

2

VS2013

方法/步骤
1

总结一:经过试验,QMouseEvent::globalPos()  和 QCursor::pos()效果一样,但是Qt帮助文档说不一样,可是我获得值确实相同的。QCursor::pos() == QMouseEvent::globalPos() 都是全局坐标;

2

总结二:将button:posBtn直接转换成全局坐标。QMouseEvent::globalPos() ==  ui.posBtn->mapToGlobal(ui.posBtn->pos());

3

总结三:将全局坐标(鼠标当前坐标,QCursor::pos())直接转换成当前坐标。当前窗口相对坐标 ==  ui.posBtn->mapFromGlobal(QCursor::pos());

4

如下图:

5

图上所示的mouseEvent.globalPos()和QCursor::pos()永远相同,都是全局坐标。图上绿色按钮的当前坐标:ui.pushButton->pos() 、转换父窗口坐标后mapToParent()、转换成全局坐标后mapToGlobal();如果当前鼠标坐标摸到按钮,按钮上面的文字发生变化,经过比较。确实得到:QCursor::pos() == ui.posBtn->mapFromGlobal(QCursor::pos());

推荐信息