我已经覆盖了登录对话框的.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”按钮。你不知道结束事件就是这样; window 要关闭。
如果对话框是打开的最后一个窗口,则QApplication::exec()将返回并且您的程序将正常关闭。