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

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

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

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

3 鼠标事件发生的位置

4 窗体的位置

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

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())))
{
    //do something...
}

————————————————

版权声明:本文为CSDN博主「hyafz」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/josephfeng/article/details/87860084

Qt:相对坐标转绝对坐标

https://blog.csdn.net/qq_42041679/article/details/121783127?spm=1001.2101.3001.6650.17&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-17-121783127-blog-129474065.pc_relevant_landingrelevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-17-121783127-blog-129474065.pc_relevant_landingrelevant&utm_relevant_index=18

//相对坐标转绝对坐标
QPoint QWidget::mapToGlobal(const QPoint &pos) const
move(mapToGlobal(_pushButton->geometry().bottomLeft()));
 
//绝对坐标转相对坐标
QPoint QWidget::mapFromGlobal(const QPoint &pos) const
 
//获取鼠标当前坐标
[static] QPoint QCursor::pos()
move(QPoint QCursor::pos());

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值