QT中鼠标位置获取问题之event->globalPos()与pos()函数

最近在学习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控件)位置时,要综合考虑这些位置关系,并且考虑边框的存在与否,当然有更好的获取位置信息的方法,望指点。


展开阅读全文

没有更多推荐了,返回首页