2010-02-17 86 views
2

我有一個子類QDialog,包含一組子類QSpinBox。單擊一個旋鈕,一個鍵盤(另一個QDialog),您可以使用按鈕輸入數字。通過調用QDialog :: exec()來激活兩個QDialog。QDialog彈出另一個QDialog

但是,當打開第二個QDialog時,第一個關閉。我已經通過它並注意到第一個QDialog尚未結束。 QDialog 1在完成QDialog 2後發出「QDialog :: Rejected」。我想要的是QDialog 1不會結束,它需要使用輸入的值更新Spinnerbox,併爲其他Spinnerbox打開更多QDialog。用戶稍後想要編輯。

我認爲這與QDialog 1的eventloop被QDialog 2的eventloop殺死有關。我已經嘗試在QDialog 2上使用QDialog :: show。該部件彈出片刻(毫秒),但不保持活動狀態。 QDialog 1也會立即關閉。

回答

3

QDialog 1設置爲Qt :: Popup,QDialog 2默認設置爲Qt :: Dialog。一個彈出窗口關閉了各種各樣的事件。我也設置QDialog 2的標誌爲Qt :: Popup,這似乎並沒有關閉QDialog 1了。

2

你用口頭方式描述了代碼的方式,你不應該看到你描述的問題。沒有看到你的實際代碼,我無法猜測導致問題的原因。但是,我可以肯定地說我在對話框A上運行了exec(),然後在對話框B(從一個按鈕)上運行exec(),並且在對話框B退出時讓對話框A保持可用狀態。

+0

謝謝,關於事件迴環的部分確實是死路一條。 – Pieter