何ヶ月にもわたる試行、検索、コードのレビューなどの後、QT で新しいウィンドウを適切に配置するための解決策を見つけることができません。私の最も基本的なケースでは、ウィンドウの最終的なサイズを取得して、マウスの下の中央に配置したいだけです。ウィンドウのどの部分も画面の外に出ないようにシフトされます。特にデスクトップFXがオンになっている場合、ウィンドウが表示されてから所定の位置に移動することは望ましくありません。
私が遭遇した問題、すべてが適切な解決策を持っているわけではありません:
frameGeometry は、ウィンドウが表示される前に常に読み込まれるとは限りません。
特に Windows 7 では、frameGeometry が完全に間違っていることがあります。
sizeHint または size が適用されるかどうか、またはその間の何かが適用されるかどうかを表示する前に知ることはできません。つまり、サイズ ポリシーは予測可能ではないようです。
以前に作成したウィンドウのジオメトリを保存/復元する方法を知っていることに注意してください。ここでもQTの欠陥にもかかわらず、私は実用的な解決策を持っています。
また、ウィンドウ マネージャーの既定の配置を使用できないことにも注意してください。マルチモニター構成の非 MDI アプリの場合、それらの配置はひどいものです (多くの場合、マウスと同じモニター上にさえありません)。
また、ソリューションを実装するためだけにすべてのウィジェットとダイアログをサブクラス化することも避けたいと思います。これは一般的ではないためです。これが唯一の可能な方法である場合は、喜んで検討します (イベント フィルターもオプションではないはずです)。
誰かが実行可能な解決策を持っていますか?