我有一个有几个 QDialogs 的程序。大多数是固定大小,但一个是可调整大小的编辑器。编辑器对话框从 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);
}
有谁知道问题是什么?
编辑:实际上,它确实记得上次的位置,只是不会居中。