窗口右上角的X按键会导致其在不给出任何提示的情况下直接退出,

当点击右上角的x按键时,会触发Qt中的一个事件处理函数:void QWidget::closeEvent ( QCloseEvent * e ),默认情况该函数无任何提示性消息,如果需提示则需要重写该函数

void Dialog::closeEvent ( QCloseEvent * e )
{
if( QMessageBox::question(this,
tr("Quit"),
tr("Are you sure to quit this application?"),
QMessageBox::Yes, QMessageBox::No )
== QMessageBox::Yes){
e->accept();//不会将事件传递给组件的父组件 qDebug()<<"ok";
}
else
e->ignore();
}

说明:

  • 事件的ignore函数表示忽略事件,将其传到父组件进行处理
  • 事件的accept函数表示接受事件,组件自己进行处理,不会将事件传递给父组件
  • 但是在这个closeEvent函数中,这两个函数尤其不一样的理解:对于窗口关闭QCloseEvent事件,
    • 调用accept()意味着 Qt 会停止事件的传播,窗口关闭;
    • 调用ignore()则意味着事件继续传播,即阻止窗口关闭。

此外如果需要直接退出某个应用程序,可以直接调用Qt中的一个全局指针:qApp ,全局指针qApp指向全局的QApplication对象。

在需要停止程序运行的位置直接加入如下代码

#include <QtGui/QApplication>
...
qApp->quit();

说明:

  • qApp是一个全局的函数,可以在Qt说明文档中直接找到,不是main函数定义的QApplication对象(QApplication对象也可以退出,使用 app->exit(0);或者 app->quit();具体可以参考【1】)
  • qApp->quit()关闭的是整个应用程序,不只是窗口,
  • 一般情况下关闭窗口应用程序会直接退出,如果要求关闭窗口时,应用程序不退出,则需要设置QApplication的属性:
QApplication::setQuitOnLastWindowClosed(false);

参考:

【1】https://blog.csdn.net/owen7500/article/details/50330697

【2】https://www.devbean.net/2012/09/qt-study-road-2-events-accept-reject/

最新文章

  1. JS逻辑运算符&amp;&amp;与||的短路运算
  2. iOS7 edgesForExtendedLayout -- 解决冲突 / 系统偏移
  3. There is already an open DataReader associated with this Command which must be closed first.&quot; exception in Entity Framework
  4. 最常用的PHP正则表达式收集整理
  5. NR_OPEN 与 NR_FILE 的区别
  6. Oracle读书笔记
  7. 直接用bat命令对Inno Setup的脚本文件.iss进行编译
  8. (转)RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)
  9. 使用ECLIPSE+MINGW搭建C/C++开发环境
  10. Qt图片显示效率的比较 转
  11. javascript 私有方法的实现
  12. win10外接键盘失灵
  13. 熟悉Python的各种基础小算法
  14. 1.搜索引擎的历史,搜索引擎起步,发展,繁荣,搜索引擎的原理,搜索技术用途,信息检索过程,倒排索引,什么是Lucene,Lucene快速入门
  15. dgraph解决社交关系中的正反向查找
  16. mxGraph绘制流程图
  17. MyBatis-CURD
  18. spark获取时间
  19. 646. Maximum Length of Pair Chain 最长的链条长度
  20. 小程序canvas的一个坑

热门文章

  1. Spring Boot 揭秘与实战(二) 数据存储篇 - MySQL
  2. H5之localStorage,sessionStorage
  3. 【转载】 看996ICU
  4. Linux命令学习之路——文档权限管理:chmod
  5. 配置Glassfish服务器、部署Java web项目、Maven安装配置及JDK版本匹配性问题
  6. hdoj 2159 (带限制的完全背包)
  7. 错题:Test3
  8. mac电脑读写NTFS格式的移动硬盘命令
  9. 芯灵思SinlinxA33开发板Linux内核定时器编程
  10. day3 反射与动态代理