4

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

    void closeEvent(QCloseEvent *event){exit(0)}

但是,对于我单击的对话框中的任何按钮,它似乎都会退出程序。如何仅在单击右上角的“x”按钮时退出?

4

1 回答 1

6

当对话框想要关闭时调用 closeEvent()。显然,如果您单击对话框的“确定”或“取消”按钮,则它要关闭。这个是正常的。

此外,传递给 closeEvent() 的事件应该被接受或忽略。您不应该只 exit() 应用程序。例如:

void closeEvent(QCloseEvent *event)
{
    if (The dialog should close)
        event->accept();
    else
        event->ignore(); // Don't close.
}

窗口为什么要关闭并不重要。用户是否单击了窗口框架中的“确定”、“取消”或“X”按钮。你说不出来。关闭事件就是这样;窗户想要关闭。

如果对话框是最后一个打开的窗口,那么 QApplication::exec() 将返回并且您的程序将正常关闭。

于 2012-11-16T21:36:12.050 回答