#qt 该方法是QWidget中的一个[虚函数](https://so.csdn.net/so/search?q=%E8%99%9A%E5%87%BD%E6%95%B0&spm=1001.2101.3001.7020),可以通过重写该函数来达到控制窗体关闭的目的。 ``` cpp virtual void closeEvent(QCloseEvent* event) override; ``` 可以通过参数event来控制是否让窗体关闭。 QT官方文档对该函数的解释为: 当Qt从窗口系统收到对顶级窗体的关闭请求时,将使用给定事件调用此事件处理程序。默认情况下,事件被接受并且部件关闭。 您可以重新实现此功能,以更改小部件响应窗口关闭请求的方式。 例如,可以通过在所有事件上调用ignore()来防止窗口关闭。 ``` cpp void Widget::closeEvent(QCloseEvent *event) { QMessageBox::StandardButton button = QMessageBox::question(this,"询问","确定关闭吗?",QMessageBox::StandardButton::Yes,QMessageBox::StandardButton::No); if(QMessageBox::StandardButton::Yes == button) { event->accept();//默认情况下接收关闭信号,关闭窗体 } else { event->ignore();//忽略关闭信号,阻止窗体关闭 } } ```