【问题标题】:How to exit program with QCloseEvent?如何使用 QCloseEvent 退出程序?
【发布时间】:2012-11-16 18:15:07
【问题描述】:

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

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

但是,对于我单击的对话框中的任何按钮,它似乎都会退出程序。 怎样才能只有点击右上角的“x”按钮才能退出?

【问题讨论】:

  • 登录窗口是您唯一的窗口吗?然后 QApplication 的 quitOnLastWindowClosed 应该可以完成这项工作。但是默认情况下是这样的,所以你似乎有另一个设置?
  • 主窗口应该调用close()

标签: c++ qt


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多