2013-01-04 88 views
3

我做了我的第一個qt窗口。現在我想用我的第一個對話框,使用qt。我剛剛完成創建對話框,它基本上是由QDialogBu​​ttonBox組成,現在我想將它連接到窗口。我有兩個初學者的問題:qt創建對話框

  • 我怎樣才能檢索到如何對話是從window.cpp,這將創建一個新的對話框關閉(OK按下或取消按下),然後調用對話框 - >顯示()?
  • 何處以及如何銷燬對話框指針?
+0

在Qt幫助文檔中搜索標準對話框示例。 [This](http://doc.qt.digia.com/qt/dialogs-standarddialogs.html)就是一個很好的例子。 –

+0

我已經閱讀了一些內容,但是我不明白這一切,我不認爲我的問題的答案就在那裏。 – shkra19

回答

2

如果您使用dialog->show()那麼我認爲它是非模態對話框。

如果您已經創建QDialogButtonBox和連接其信號與你對話的accept()reject()插槽,documentation shows,那麼你的對話框會發出finished(int)和另外accepted()rejected()信號,通過它可以判斷它是如何關閉。

如果您需要更多自定義行爲,那麼您可以重新實現closeEvent(QCloseEvent *event)或創建自己的singnals。

如果您需要刪除對話框,您可以使用setAttribute(Qt::WA_DeleteOnClose, true);,這會在關閉時刪除實例。

1

您可以使用一個標誌,信號和插槽。 當把OK標誌= 1,並且當放置取消然後標誌= -1;然後使用信號。在window.h中寫入代碼 如何處理1個簡單插槽的標誌。

銷燬指針,你可以使用你的對話信號和插槽,並告訴用戶何時推 好吧,或取消,或退出(右向上(紅十字會))去調用插槽Destructer的對話框

也是你,你更好地設置對話框的父窗口。

1
  • 第一個問題:

    當你想顯示對話框,只是構建它,使用myDialog *d = new myDialog(this)(該指針會確保你沒有帶刪除您創建的指針「事業如果你指定了對話框的父項,Qt會處理這個)。 使用d->exec()如果您需要模態對話框, d-> show()使其成爲非模態;

  • 第二個問題:

    一旦您指定對話框的父對象,所有的u需要的就是使用它,先不談內存,上海管理,QT會爲你做到這一點。 你可以使用d->setAttribute(Qt::WA_DeleteOnClose,true)使它在關閉時自行銷燬。

記住QDialogButtonBox鏈接到你的對話框的行爲。

+0

你的第一個答案不涉及問題。問題是 - 如何確定對話是否已關閉(以及如何)。在第二個答案中,如果設置了父項,則可以單獨保留該對話框。主窗口很可能是對話框的父窗口部件,因此在應用程序退出之前內存不會被釋放。 4小時後重複我的提示又有什麼意義? – doc

+0

對不起,男士。我進入我的辦公室後立即回答了這個問題,打開我的電腦開始了一天,似乎我們不在同一個時區。你以爲我在重複你的提示。當我看到問題時,我立即給出了答案,並抱歉沒有注意到**你的提示**。我只是想幫助。我的英語不夠好,我的回答可能會有所幫助。 :) – helsinki

+0

我以爲你是一個孩子,我爲我的教學風格道歉。現在我看到,由於時區問題,你會在4小時後看到事物。幸運的是,我調整了我的桌面時鐘以匹配您的時區,並且您有機會立即看到此評論。 – doc