1、QPoint QWidget::mapToGlobal(const QPoint &pos) const
将小部件坐标转换为全局坐标。mapToGlobal(QPoint(0,0))可以得到小部件左上角像素的全局坐标。
2、QPoint QWidget::mapToParent(const QPoint &pos) const
将小部件坐标转换为父部件坐标。如果小部件没有父部件,则效果与mapToGlobal()相同。
3、QPoint QWidget::mapTo(const QWidget *parent, const QPoint &pos) const
将小部件的坐标转换为父部件的坐标系统,parent不能是0,必须是调用小部件的父部件。
4、QPoint QWidget::mapFromGlobal(const QPoint &pos) const
将全局坐标转换为小部件坐标。
5、QPoint QWidget::mapFromParent(const QPoint &pos) const
将父部件坐标转换为小部件坐标。如果小部件没有父部件,则效果与mapFromGlobal()相同。
6、QPoint QWidget::mapFrom(const QWidget *parent, const QPoint &pos) const
将小部件的坐标pos从父部件的坐标系统转换为小部件的坐标系统。parent不能是0,必须是调用小部件的父部件。
7、QPoint QMouseEvent::pos() const
返回鼠标光标相对于接收事件的小部件的位置。
8、QPoint QMouseEvent::globalPos() const
返回事件发生时鼠标光标的全局位置。
9、const QPointF &QMouseEvent::screenPos() const
以QPointF的形式返回鼠标光标相对于接收事件的屏幕的位置。这个函数是在Qt 5.0中引入的。
代码如下:
void Widget::on_pushButton_clicked()
{
Form *a = new Form;
a->move(0, 0);
a->show();
}
结果:
每次点击按键,生成的子窗口在屏幕的左上方,使用**this->pos()**转换的坐标后,子窗口在父窗口的左上方。
使用mapToGlobal转换后,每次打开都在按键的左上方。
加上一些控件的坐标的计算后,就可以每次打开都在控件的下面了。
参考文章:https://blog.csdn.net/sunflower_2020/article/details/135693171