我有一个有几个QDialog的程序。大多数是固定大小,但其中一个是可调整大小的编辑器。编辑器对话框从QByteArray恢复其几何体。
我遇到的问题是编辑器不正确居中。 (仅限窗口的x / y尺寸)编辑器通常在实例化时出现在左上角。
Editor类在MainWindow中实例化如下:
Editor e(this);
e.exec();
出于某种原因,恢复窗口几何会破坏编辑器相对于其父级的自动居中。在我今天实现SaveGeometry和RestoreGeomentry代码之前,编辑器工作正常。
这是Editor.cpp中的SaveGeometry代码:(它在当前Editor对象被销毁之前执行)
// Remember current window size
QByteArray geo=saveGeometry();
SettingsManager s;
s.SaveEditorSize(geo);
这是Editor.cpp中的恢复代码:(这是设置UI,分配布局等功能的一部分)。
if(!Buffer::editor_geometry.isEmpty()){
restoreGeometry(Buffer::editor_geometry);
}
有谁知道问题是什么?
编辑:实际上,它确实记得上次的位置,它不会居中。
答案 0 :(得分:0)
实际上,我认为我已经解决了这个问题。
我没有存储整个窗口几何体,而是尝试将大小存储为QSize。然后在初始化编辑器时通过QDialog :: Resize()重新应用大小。该窗口会记住它以前的大小,而仍然保持居中,就像它应该的那样。