obsidian/笔记文件/2.笔记/QT中的closeEvent方法.md
2025-03-26 00:02:56 +08:00

1.1 KiB
Raw Permalink Blame History

#qt

该方法是QWidget中的一个虚函数,可以通过重写该函数来达到控制窗体关闭的目的。

virtual void closeEvent(QCloseEvent* event) override;

可以通过参数event来控制是否让窗体关闭。 QT官方文档对该函数的解释为 当Qt从窗口系统收到对顶级窗体的关闭请求时将使用给定事件调用此事件处理程序。默认情况下事件被接受并且部件关闭。 您可以重新实现此功能,以更改小部件响应窗口关闭请求的方式。 例如可以通过在所有事件上调用ignore来防止窗口关闭。

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();//忽略关闭信号,阻止窗体关闭
    }
}