Qt笔记:窗口关闭事件处理

窗口关闭事件(QCloseEvent)是当鼠标点击窗口右上角的关闭按钮时,所触发的函数。如果你没有重写virtual closeEvent(QCloseEvent*event);这个虚函数的话,系统是默认接受关闭事件的,所以就会关闭窗体。但有的时候,我们可能需要保存文本或做一些其他的处理,旧需要重写该函数,用来在窗口关闭之前处理自己需要的事情。

.cpp文件重写该函数:

void Login::closeEvent(QCloseEvent *event)
    //判断账号输入框是否为空(只是作为一个条件)
    if(ui->lineEdit_AccountName->text().isEmpty())
        //需要处理的内容
        //接收这个事件,当前窗口会关闭
        event->accept();
    }else
        //忽略这个事件,当前窗口不会关闭
        event->ignore();
}

.h中声明该函数

class Login : public QWidget
    Q_OBJECT
public:
    explicit Login(QWidget *parent = nullptr);
    ~Login();
    //这是虚函数,重写这个虚函数,当你按下窗口右上角的"×"时,就会调用你所重写的此函数.
    void closeEvent(QCloseEvent *event);