如何设置Qt小部件的相对位置?

如何设置Qt小部件的相对位置?,qt,Qt,我一直在搜索和阅读关于移动小部件的文档,但我仍然在寻找一个好的例子 我有一个我用热键显示的小部件,我希望它在主窗口的其他地方而不是中央弹出。如果使用move(),则小部件将保持在该位置,而不管其父窗口的位置是否更改。我希望将小部件放置在父小部件内部的某个位置,以便在移动父小部件时,它保持在相对位置。我该怎么做呢 我读过关于MapToParent的文章,但我不知道如何使用它。我试过: QPoint fD_p = fDialog->pos(); QPoint parent_fD_p = QWi

我一直在搜索和阅读关于移动小部件的文档,但我仍然在寻找一个好的例子

我有一个我用热键显示的小部件,我希望它在主窗口的其他地方而不是中央弹出。如果使用move(),则小部件将保持在该位置,而不管其父窗口的位置是否更改。我希望将小部件放置在父小部件内部的某个位置,以便在移动父小部件时,它保持在相对位置。我该怎么做呢

我读过关于MapToParent的文章,但我不知道如何使用它。我试过:

QPoint fD_p = fDialog->pos();
QPoint parent_fD_p = QWidget::mapToParent(fD_p);
fDialog->move(parent_fD_p);

您应该在父窗口小部件
void QWidget::moveEvent(QMoveEvent*event)
中重新实现移动事件处理程序,可能还会重新实现调整大小事件处理程序

在这些事件处理程序中,您可以重新计算小部件的新位置,然后移动它

mapToParent
mapFromParent
方法转换相对坐标。从文件中:

QPoint QWidget::mapFromParent ( const QPoint & pos ) const
Translates the parent widget coordinate pos to widget coordinates.

Same as mapFromGlobal() if the widget has no parent.