如何在离开(关闭或失去焦点)window 之前显示模态确认消息?

How to show a modal confirmation message before leaving (closing or losing focus) of a window?

我想在用户离开(alt + tab(关闭或松开焦点))MainWindow 之前显示确认消息框并阻止屏幕。如何做到这一点?

这是我的代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QMainWindow::showFullScreen();
    this->installEventFilter(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

bool MainWindow::eventFilter(QObject *obj, QEvent *event){
    if(event->type() == 128){
        QMessageBox::information(this, "title", "text", QMessageBox::Ok | QMessageBox::Cancel);

        return true;
    }

    return true;
}

关闭事件:

在您的 MainWindow class 中重新实现 closeEvent 方法。 Link

对于 window 激活和停用事件尝试 following:

bool MainWindow::event(QEvent * e) // overloading event(QEvent*) method of QMainWindow 
{
    switch(e->type())
    {
        // ...

        case QEvent::WindowActivate :
            // gained focus
            break ;

        case QEvent::WindowDeactivate :
            // lost focus
            break ;
        // ...
    } ;
    return QMainWindow::event(e) ;
}