Qt实现关闭窗口触发事件

⌚Time: 2022-04-23 17:06:14

👨‍💻Author: Jack Ge

Qt程序关闭前,有时候需要弹出一个确认窗口,如何实现呢?

当鼠标点击窗口右上角的关闭按钮时,会触发一个窗口关闭事件(QCloseEvent),只需要覆写窗口类的closeEvent(QCloseEvent *event)函数,就可以对此事件进行相应处理


用到的头文件


#include<QMessageBox>

#include<QCloseEvent>

编辑窗口类




class MainWindow : public QMainWindow

{

    Q_OBJECT

    

public:

    explicit MainWindow(QWidget *parent = 0);

    ~MainWindow();

    //覆写closeEvent函数

    void closeEvent(QCloseEvent *);

private:

    Ui::MainWindow *ui;

};

源文件实现closeEvent(QCloseEvent *)函数


void MainWindow::closeEvent(QCloseEvent *e){

    //窗口关闭时弹出的提示窗口

    QMessageBox msgBox;

    msgBox.setText("提示");

    msgBox.setInformativeText("确认退出?");

    msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);

    msgBox.setDefaultButton(QMessageBox::Ok);

    int ret = msgBox.exec();

    if(ret == QMessageBox::Ok){

        //若用户点击确认,则接收这个事件,当前窗口会关闭

        e->accept();

    }else{

        //若用户点击取消,则忽略这个事件,当前窗口不会关闭

        e->ignore();

    }

}


效果: