如何在离开(关闭或失去焦点)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) ;
}
我想在用户离开(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) ;
}