我已经覆盖了登录对话框的.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()将返回并且您的程序将正常关闭。

09-06 16:24