複数の QDialogs を持つプログラムがあります。ほとんどは固定サイズですが、1 つはサイズ変更可能なエディターです。エディター ダイアログは、QByteArray から復元されたジオメトリを取得します。
私が抱えている問題は、エディターが正しく中央に配置されていないことです。(ウィンドウの x/y 寸法のみ) 通常、エディターはインスタンス化されると左上隅に表示されます。
Editor クラスは、MainWindow で次のようにインスタンス化されます。
Editor e(this);
e.exec();
何らかの理由で、ウィンドウ ジオメトリを復元すると、親に対するエディタの自動センタリングが壊れます。今日、SaveGeometry と RestoreGeometry のコードを実装する前は、エディターは正常に機能していました。
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);
}
誰が問題が何であるか知っていますか?
編集:実際には、前回の場所を覚えていますが、中央に表示されません。