【Qt】窗口关闭提示框

在关闭QWdiget窗口时弹出提示框

重写**closeEvent**函数

cpp 复制代码
void closeEvent(QCloseEvent* event) override;
cpp 复制代码
		QMessageBox *msgBox = new QMessageBox(QMessageBox::Question, "信息提示", "是否保存当前数据?", QMessageBox::Save | QMessageBox::No | QMessageBox::Cancel, this, Qt::WindowStaysOnTopHint);
        msgBox->setDefaultButton(QMessageBox::No);
        msgBox->button(QMessageBox::Save)->setText(u8"保存");
        msgBox->button(QMessageBox::No)->setText(u8"不保存");
        msgBox->button(QMessageBox::Cancel)->setText(u8"取消");

        int res = msgBox->exec();
        if (res == QMessageBox::Save)
        {
            model->saveDate();
        }
        else if (res == QMessageBox::Cancel)
        {
            event->ignore();
        }

        delete msgBox;
    	this->close();

通过按钮在点击时弹窗

在按钮对应的槽函数中,适用于无边框的窗口

cpp 复制代码
// 退出系统
void ExitAction(bool state)
{
    if_Data = 0;

    QMessageBox* msgBox = new QMessageBox(QMessageBox::Question, "提示", "退出系统?", QMessageBox::Save /*| QMessageBox::No */ | QMessageBox::Cancel, this, Qt::WindowStaysOnTopHint);
    msgBox->setDefaultButton(QMessageBox::No);
    msgBox->button(QMessageBox::Save)->setText(u8"确定");
    msgBox->button(QMessageBox::Cancel)->setText(u8"取消");

    int res = msgBox->exec();
    if (res == QMessageBox::Save)
    {
        qApp->quit();
    }

    delete msgBox;
}
相关推荐
大飞记Python12 分钟前
【2026更新】Python基础学习指南(AI版)——04数据类型
开发语言·人工智能·python
极创信息21 分钟前
信创产品认证怎么做?信创产品测试认证的主要流程
java·大数据·数据库·金融·软件工程
Alice-YUE1 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
云泽8081 小时前
C++11 核心特性全解:列表初始化、右值引用与移动语义实战
开发语言·c++
froginwe111 小时前
DOM 加载函数
开发语言
lzhdim1 小时前
SQL 入门 12:SQL 视图:创建、修改与可更新视图
java·大数据·服务器·数据库·sql
Hello eveybody1 小时前
介绍一下背包DP(Python)
开发语言·python·动态规划·dp·背包dp
2301_795099742 小时前
让 CSS Grid 自适应容器尺寸的动态布局方案
jvm·数据库·python
AI进化营-智能译站2 小时前
ROS2 C++开发系列12-用多态与虚函数构建可扩展的ROS2机器人行为模块
开发语言·c++·ai·机器人