【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;
}
相关推荐
前进的李工6 分钟前
智能Agent实战指南:从入门到精通(工具)
开发语言·人工智能·架构·langchain·agent·tool·agentexecutor
Paxon Zhang13 分钟前
MySQL 大师之路**数据库约束,表设计,CRUD**
android·数据库·mysql
小成2023032026516 分钟前
Linux高级03
linux·开发语言
HealthScience20 分钟前
clinvar数据集说明
数据库·oracle
lly20240620 分钟前
Ruby CGI方法详解
开发语言
XiYang-DING21 分钟前
【Java】从源码深入理解HashMap和TreeMap
java·开发语言
煜bart26 分钟前
使用 TypeScript 实现算法处理
开发语言·前端·javascript
yong158585534327 分钟前
Linux C++ 中的 volatile变量在多线程环境下进行运算的问题
c语言·c++
王的宝库27 分钟前
【MySQL】主从复制原理详解:从 Binlog 到数据一致性
数据库·mysql
♛识尔如昼♛27 分钟前
C 基础(7) - 字符输入/输出和输入验证
c语言·开发语言