3
發出的時候我已經覆蓋在登錄對話框的.h文件中的函數的closeEvent使其退出程序:如何用QCloseEvent退出程序?
void closeEvent(QCloseEvent *event){exit(0)}
然而,似乎退出了我點擊任何對話框中的按鈕程序。 只有點擊右上角的「x」按鈕才能退出?
發出的時候我已經覆蓋在登錄對話框的.h文件中的函數的closeEvent使其退出程序:如何用QCloseEvent退出程序?
void closeEvent(QCloseEvent *event){exit(0)}
然而,似乎退出了我點擊任何對話框中的按鈕程序。 只有點擊右上角的「x」按鈕才能退出?
closeEvent()在對話框關閉時調用。顯然,如果你點擊一個對話框的「確定」或「取消」按鈕,那麼它想關閉。這個是正常的。
此外,傳遞給closeEvent()的事件應該被接受或忽略。你不應該退出()應用程序。例如:
void closeEvent(QCloseEvent *event)
{
if (The dialog should close)
event->accept();
else
event->ignore(); // Don't close.
}
爲什麼窗口想要關閉並不重要。用戶是否單擊窗口框中的「確定」或「取消」或「X」按鈕。你不知道。關閉事件就是這樣;窗戶想關閉。
如果對話框是最後打開的窗口,那麼QApplication :: exec()將返回並且程序將正常關閉。
登錄窗口是您唯一的窗口嗎?然後QApplication的quitOnLastWindowClosed應該完成這項工作。但是這是默認情況,所以你似乎有另一種設置? –
你應該爲主窗口調用'close()'。 – Ruu