我已经覆盖了登录对话框的 .h 文件中的 closeEvent 函数,以便它在发出时退出程序:
void closeEvent(QCloseEvent *event){exit(0)}
但是,对于我单击的对话框中的任何按钮,它似乎都会退出程序。如何仅在单击右上角的“x”按钮时退出?
当对话框想要关闭时调用 closeEvent()。显然,如果您单击对话框的“确定”或“取消”按钮,则它要关闭。这个是正常的。
此外,传递给 closeEvent() 的事件应该被接受或忽略。您不应该只 exit() 应用程序。例如:
void closeEvent(QCloseEvent *event)
{
if (The dialog should close)
event->accept();
else
event->ignore(); // Don't close.
}
窗口为什么要关闭并不重要。用户是否单击了窗口框架中的“确定”、“取消”或“X”按钮。你说不出来。关闭事件就是这样;窗户想要关闭。
如果对话框是最后一个打开的窗口,那么 QApplication::exec() 将返回并且您的程序将正常关闭。