如何使用QCloseEvent退出程序

How to exit program with QCloseEvent?

本文关键字:退出程序 QCloseEvent 何使用      更新时间:2023-10-16

我已经覆盖了登录对话框.h文件中的closeEvent函数,以便它在发出时退出程序:

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()将返回,您的程序将正常关闭。