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

时间:2013-03-06 04:25:33

标签: qt

我一直在四处寻找关于移动小部件的文档,但我仍然在寻找一个很好的例子。

我有一个用热键显示的小部件,我希望它在MainWindow而不是中心的其他地方弹出。如果我使用move(),那么无论父窗口是否改变位置,窗口小部件都会保持在该位置。我希望将窗口小部件放置在父窗口小部件内的位置,以便在移动父窗口小部件时,它保持在相对位置。我怎么能这样做呢?

我读到了MapToParent,但我不知道如何使用它。我试过了:

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

1 个答案:

答案 0 :(得分:2)

您应该在父窗口小部件void QWidget::moveEvent ( QMoveEvent * event )中重新实现move事件处理程序,并且可能重新调整resize事件处理程序。

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

mapToParentmapFromParent方法转换相对坐标。来自文档:

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.