Qt窗体中常用坐标的区别与获取途径

本文详细介绍了Qt中不同类型的坐标系统,包括光标相对于屏幕的绝对位置、相对于当前窗口的位置、鼠标事件的位置,以及如何获取窗体位置。同时,讲解了如何判断鼠标光标是否悬浮在特定子控件上,强调了geometry()与QCursor::pos()的区别,并提供了将鼠标绝对位置转换为控件坐标的方法。
摘要由CSDN通过智能技术生成

1 当前光标相对于屏幕的绝对位置

QCursor::pos()

2 当前光标相对于当前窗口的位置

this->mapFromGlobal(QCursor::pos())

3 鼠标事件发生的位置

void MainWindow::mouseReleaseEvent(QMouseEvent* event)
{
    QPoint pos = event->pos();                        //相对于当前窗口的位置
    QPoint globalPos = event->globalPos();    //相对于屏幕的全局绝对位置
}

4 窗体的位置

QWidget *widget = new QWidget();
widget.pos();    //窗体的左上角的位置

5 判断鼠标光标是否悬浮在某个子控件上

获取子窗口geometry,判断是否包含光标所在的坐标,如果是,则表示光标正悬浮在该子控件上。
注意geometry()是相对于父窗口的相对位置,而QCursor::pos()获取的是鼠标绝对位置。需要进行一次转换,要不将父窗口的相对位置进行换算,要不将鼠标的绝对位置进行换算,这里采用将鼠标绝对位置换算到控件上,示例代码如下:

if(ui->pushButtonTest->geometry().contains( this->mapFromGlobal(QCursor::pos())))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值