2016-11-08 48 views
0

我有一個QDialog,我有一個可選按鈕女巫打開/關閉(隱藏/顯示)另一個窗口(該窗口也是一個QDialog)。如何保持隱藏/顯示QDialog的位置

我的問題是我希望保持第二個QDialog的位置,當我隱藏和打開它後(例如:我將QDialog移動到屏幕的一個角落,當我隱藏然後顯示它時,QDialog需要在同一個角落)。

此時它似乎在初始位置恢復。我在similar找到了一篇類似的文章,但在我的情況下,我有兩個獨立的窗口,我可以在屏幕上移動第二個QDialog。有人遇到這個問題嗎?

+0

我現在無法測試,所以你可以試試'setVisible(true)'而不是show? – Hayt

+0

我有除了這個屬性留在同一地點的所有mecanism。這是我找不到解決方案的問題。 – student

+0

@drescherjm它應該這樣做。它是這樣定義的:http://doc.qt.io/qt-5/qwidget.html#hide – Hayt

回答

4

AFAIK這個工程沒有任何代碼:顯示/隱藏小部件時位置不變。

無論如何,你可以通過它geometry存儲您QDialog的位置:

// save geometry 

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

// restore geometry 

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

注意,幾何形狀相對於父:我想在這裏你QDialog是無模式。

+0

這似乎工作正常。顯然,我不能覆蓋setVisible函數,但我設法使我自己的功能,修改此。 – student

相關問題