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