【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;
}
相关推荐
捕鲸叉3 分钟前
C++并发编程之基于锁的数据结构的适用场合与需要考虑和注意的问题
c++·并发编程
王吕阳20 分钟前
1/13+2
c++
夏炎正好眠31 分钟前
mysql概述
数据库·mysql·oracle
get_money_1 小时前
动态规划汇总1
开发语言·数据结构·笔记·算法·leetcode·动态规划·代理模式
Huazzi.1 小时前
【算法学习】——整数划分问题详解(动态规划)
开发语言·数据结构·c++·学习·算法·动态规划
众拾达人1 小时前
旅游网站设计与实现
数据库·旅游
摇光~1 小时前
【数据仓库】— 5分钟浅谈数据仓库(适合新手)从理论到实践
大数据·数据库·数据仓库·spark·etl
三天不学习1 小时前
如何将 sqlserver 数据迁移到 mysql
数据库·mysql·sqlserver
fengyehongWorld1 小时前
Oracle 终止正在执行的SQL
数据库·oracle
机器视觉知识推荐、就业指导1 小时前
Qt/C++ 基于回调模式的海康3D相机开发流程详解(附工程源码、开发文档下载链接)
c++·数码相机·qt