0

我有一个有几个 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);
}

有谁知道问题是什么?

编辑:实际上,它确实记得上次的位置,只是不会居中。

4

1 回答 1

0

实际上,我想我已经解决了这个问题。

我没有存储整个窗口几何图形,而是尝试将大小存储为 QSize。然后在初始化编辑器时通过 QDialog::Resize() 重新应用大小。窗口会记住它以前的大小,并像它应该的那样保持在父级的中心。

于 2012-11-04T17:44:38.930 回答