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

时间:2015-09-16 06:55:36

标签: c++ qt window desktop

我想在用户离开之前显示确认消息框并阻止屏幕(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;
}

1 个答案:

答案 0 :(得分:1)

For close event:

Reimplement closeEvent method in your MainWindow class. Link

对于窗口激活和停用事件,请尝试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) ;
}