转自:https://blog.csdn.net/xuejie_n/article/details/42364997
最近在学习QT,准备做个界面程序,在获取鼠标位置信息时,查了好多资料,对于event->globalPos()与pos()函数都说的不是很清楚。
通过程序测试,最后是搞清楚了,在这利用形象的图解来代替文字向大家描述,更易理解些。
widget窗口是带边框的类型,如下图1(上边框和侧边框都是有厚度的)
图.1
1.而由event->globalPos()获取的鼠标位置是鼠标偏离电脑屏幕左上角(x=0,y=0)的位置;
2.由pos()获取的位置是主窗口(widget窗口)左上角(边框的左上角,外左上角)相对于电脑屏幕的左上角的(x=0,y=0)偏移位置
3.子窗口的位置属性,label->setGeometry(QRect(x,y,w,h));
其中x,y如图所示,是子窗口label左上角相对于主窗口widget窗口的左上角(除去去边框,内左上角)的偏移位置;如下图2所示,各位置信息。
图.2
在计算鼠标相对于子窗口(label控件)位置时,要综合考虑这些位置关系,并且考虑边框的存在与否,当然有更好的获取位置信息的方法,望指点。
</div>