Qt如何通过pos()获取坐标信息

 更新时间:2024年01月05日 11:32:10   作者:lpl轻舟已过万重山  
这篇文章主要给大家介绍了关于Qt如何通过pos()获取坐标信息的相关资料,文中通过代码介绍的非常详细,对大家学习或者使用qt具有一定的参考借鉴价值,需要的朋友可以参考下

背景:这是一个QWidget窗体,里面是各种布局的组合,一层套一层。

我希望得到绿色部分的坐标信息(x,y)

QPoint get_pos(QWidget* w, QWidget* parent)
{
	if ((QWidget*)w->parent() == parent) {
		return w->pos();
	}
	else {
		QPoint pos(w->pos());
		pos += get_pos((QWidget*)w->parent(), parent);
		return pos;
	}
}

假设

绿色窗体为w

最外面的窗体为m

get_pos(w,m);

附:在实现一个可以自由拖动位置的widget时

void ShadowWidget::mousePressEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton && !mouse_press) {
        mouse_press = true;
    }

    //窗口移动距离
    orig_point = event->globalPos();
    orig_pos = pos() ;
}

void ShadowWidget::mouseReleaseEvent(QMouseEvent *)
{
    if (mouse_press) {
        mouse_press = false;
    }
}

void ShadowWidget::mouseMoveEvent(QMouseEvent *event)
{
    //移动窗口
    if (mouse_press) {
        QPoint move_point = event->globalPos();
        move(move_point - orig_point  + orig_pos );  
        /*move是相对于桌面系统来移动widget,所以是相对于移动前
        widget在桌面系统的位置上来进行的,
        所以要加上orig_pos*/
    }
}

在坐标位置变换时注意下不同坐标系的坐标轴原点差异,就能灵活应对了。

总结 

到此这篇关于Qt如何通过pos()获取坐标信息的文章就介绍到这了,更多相关Qt pos()获取坐标内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • QT使用udp实现发送与接收图片

    QT使用udp实现发送与接收图片

    这篇文章主要为大家详细介绍了QT如何使用udp协议实现发送与接收图片功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • C++实现“隐藏实现,开放接口”的方案

    C++实现“隐藏实现,开放接口”的方案

    本文从一个实例讲解了C++实现“隐藏实现,开放接口”的方案,文章条理清新,内容充实,需要的朋友可以参考下
    2015-07-07
  • C语言中强制地址跳转详解

    C语言中强制地址跳转详解

    这篇文章主要介绍了C语言中强制地址跳转详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • VC中SendMessage和PostMessage的区别

    VC中SendMessage和PostMessage的区别

    这篇文章主要介绍了VC中SendMessage和PostMessage的区别,较为全面的分析了SendMessage和PostMessage运行原理及用法上的不同之处,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • c++ 构造函数的初始化列表

    c++ 构造函数的初始化列表

    构造函数的初始化列表仅仅指定用于初始化成员的值,并不指定这些初始化执行的次序。成员初始化的次序就是定义成员的次序,第一个成员首先被初始化,然后是第二个,依次类推
    2013-07-07
  • C++实现LeetCode(198.打家劫舍)

    C++实现LeetCode(198.打家劫舍)

    这篇文章主要介绍了C++实现LeetCode(198.打家劫舍),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C/C++ Qt实现文章小说人物关系分析

    C/C++ Qt实现文章小说人物关系分析

    这篇文章主要为大家详细介绍了C/C++ Qt如何实现文章小说人物关系分析功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-01-01
  • Qt多版本共存使用实现组件增删

    Qt多版本共存使用实现组件增删

    本文主要介绍了Qt多版本共存使用实现组件增删,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • VC++ 获取系统时间的方法汇总

    VC++ 获取系统时间的方法汇总

    本文给大家汇总介绍了5种VC++中获取系统时间的方法,十分的简单实用,有需要的小伙伴可以参考下。
    2015-07-07
  • C++基于EasyX框架实现飞机大战小游戏

    C++基于EasyX框架实现飞机大战小游戏

    EasyX是针对C/C++的图形库,可以帮助使用C/C++语言的程序员快速上手图形和游戏编程。本文将利用EasyX框架实现飞机大战小游戏,需要的可以参考一下
    2023-01-01

最新评论