如何使用QCloseEvent退出程序?

时间:2012-11-16 18:15:07

标签: c++ qt

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

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

然而,似乎退出程序中我点击的对话框中的任何按钮。 如何仅在单击右上角的“x”按钮时退出?

1 个答案:

答案 0 :(得分:5)

在对话框要关闭时调用closeEvent()。显然,如果单击对话框的“确定”或“取消”按钮,则表示要关闭。这很正常。

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

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

窗口想关闭的原因并不重要。用户是否单击了窗口框中的“确定”,“取消”或“X”按钮。你不能说。一个紧密的事件就是这样;窗户想要关闭。

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