最近在学习QT,准备做个界面程序,在获取鼠标位置信息时,查了好多资料,对于event->globalPos()与pos()函数都说的不是很清楚。
通过程序测试,最后是搞清楚了,在这利用形象的图解来代替文字向大家描述,更易理解些。
widget窗口是带边框的类型,如下图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控件)位置时,要综合考虑这些位置关系,并且考虑边框的存在与否,当然有更好的获取位置信息的方法,望指点。
本文深入解析QT中event->globalPos()与pos()函数的区别,通过图解方式展示鼠标位置、主窗口与子窗口的位置关系,帮助读者理解鼠标位置在不同上下文中的含义。
1005

被折叠的 条评论
为什么被折叠?



