C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > Qt pos()获取坐标

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

作者: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()获取坐标内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文