2016-11-08 9 views
0

QDialogを持っています。チェック可能なボタンの魔女が別のウィンドウを開いたり閉じたりします(ウィンドウはQDialogでもあります)。hide/showにQDialogの位置を維持する方法

私の問題は、非表示にして開いた後の2番目のQDialogの位置を維持したいということです。(例:QDialogを画面の隅に移動し、非表示にしてからQDialogを表示する必要があります同じコーナーで)。

この時点では、最初の位置に復元されているようです。私はsimilarにそれに関する同様の記事を見つけましたが、私の場合は2つの別々のウィンドウがあり、2番目のQDialogを画面上に移動できます。誰もこの問題に会いましたか?

+0

今はテストできませんので、showではなく 'setVisible(true)'を試すことができますか? – Hayt

+0

私は同じ場所に留まることをこのプロパティ以外のすべてのmecanismがあります。これは私が解決策を見つけることができない問題です。 – student

+0

@ drescherjmしかし、これを行う必要があります。その方法で定義されています:http://doc.qt.io/qt-5/qwidget.html#hide – Hayt

答えて

4

AFAIKこれはコードなしで動作します。ウィジェットの表示/非表示時の位置は変更されません。

とにかく、あなたはそのgeometryを通して、あなたのQDialogの位置を保存することができます:私はあなたのQDialogがモードレスで、ここで想定しています。ジオメトリが親に相対的であることを

// save geometry 

QRect geometry = my_dialog->geometry(); 
my_dialog->hide(); 

// restore geometry 

my_dialog->show(); 
my_dialog->setGeometry(geometry); 

注意。

+0

これはうまくいくようです。どうやら私はsetVisible関数をオーバーライドすることはできませんが、私はこれを変更する独自の関数を作成することができます。 – student

関連する問題