要实现点击关闭界面时弹出提示窗口,选择'OK'退出,点击关闭按钮不退出,可以使用Qt的事件过滤器来实现。

首先,在窗口类的构造函数中安装事件过滤器:

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

然后,在窗口类中重写事件过滤器的函数:

bool MainWindow::eventFilter(QObject *obj, QEvent *event) 
{
    if (event->type() == QEvent::Close) { 
        QMessageBox::StandardButton reply; 
        reply = QMessageBox::question(this, "提示", "确定要退出吗?", QMessageBox::Yes|QMessageBox::No); 
        if (reply == QMessageBox::Yes) { 
            // 点击'OK'退出 
            return QMainWindow::eventFilter(obj, event); 
        } else { 
            // 点击关闭按钮不退出 
            event->ignore(); 
            return true; 
        } 
    } 
    return QMainWindow::eventFilter(obj, event); 
}

这样,当点击关闭按钮时,会弹出提示窗口,选择'OK'会退出,点击关闭按钮会忽略关闭事件,从而不退出应用程序。

Qt 窗口关闭提示:确认退出,点击关闭按钮不退出

原文地址: https://www.cveoy.top/t/topic/fzHc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录