QMouseEvent中两类坐标系统,一类是窗口坐标,一类是显示器坐标。
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)