如何在hide / show上保持QDialog的位置

时间:2016-11-08 13:13:37

标签: c++ qt

我有一个QDialog,我有一个可检查的按钮,可以打开/关闭(隐藏/显示)另一个窗口(该窗口也是一个QDialog)。

我的问题是我希望在隐藏和打开后保持第二个QDialog的位置(例如:我将QDialog移动到屏幕的一角,当我隐藏然后显示它时,QDialog需要在同一个角落)。

此时它似乎在初始位置恢复。我在similar找到了类似的文章,但在我的情况下,我有两个独立的窗口,我可以在屏幕上移动第二个QDialog。有没有人遇到这个问题?

1 个答案:

答案 0 :(得分:4)

AFAIK无需任何代码即可运行:显示/隐藏小部件时位置不会改变。

无论如何,您可以通过geometry存储QDialog的位置:

// save geometry

QRect geometry = my_dialog->geometry();
my_dialog->hide();

// restore geometry

my_dialog->show();
my_dialog->setGeometry(geometry);

请注意,几何图形是相对于父图形的:我假设您的QDialog是无模式的。