最近使用QDialog时,按了下Esc键,导致QDialog被关闭,而后续的数据处理出现了问题。原来在QDialog中按下Esc键会默认调用reject()方法而不是closeEvent(QCloseEvent*event)或者其他事件。

处理的方法:

(注意:QDialog的close()函数也是会调用reject()函数和关闭函数,若在reject()中直接调用close()也会无法关闭,要先调用hide())

(1)重新实现reject()方法

  1. void TestDialog::reject()
  2. {
  3. //关闭窗口,可以重新执行其他事件
  4. this->hide();  //或者this->accept()
  5. this->close();
  6. }

2、重写keyPressEvent(QKeyEvent *event)

  1. void TestDialog::keyPressEvent(QKeyEvent *event)
  2. {
  3. switch(event->key()) {
  4. //进行界面退出,重写Esc键,否则重写reject()方法
  5. case Qt::Key_Escape:
  6. this->close();
  7. break;
  8. default:
  9. QDialog::keyPressEvent(event);
  10. }
  11. }

以上者两种方法都可以解决Esc键触发的问题,当然这只是在QDialog中是这种情况。在QWidget中没有reject ()和accept()槽函数,但可以通过keyPressEvent(QKeyEvent*event)来制定Esc键的功能。

http://blog.csdn.net/taiyang1987912/article/details/48053575

最新文章

  1. [杂谈]冲NOIP一等奖。。
  2. Structure Of Management Information - SNMP Tutorial
  3. initWithCoder: 与initWithFrame:的区别
  4. xampp的Apache无法启动解决方法
  5. 关于ImageMagick出现无效参数(invalid parameter)的解决方法
  6. EntityFramework执行SQL语句
  7. Javascript -- Math.round()、Math.ceil()、Math.floor()、parseInt去小数取整总结
  8. ExtJS 4 组件详解
  9. HDU 3032 Nim or not Nim? (sg函数求解)
  10. java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4
  11. 再议Unity优化
  12. zookeeper分布式搭建
  13. iOS日历中给一个事件添加多个提醒
  14. 【基于微信小程序的社区电商平台】第一次迭代心得(非正式版本
  15. 第七节《Git协议与工作协同》
  16. python基础(10)-匿名函数&内置函数
  17. Java微信二次开发(五)
  18. android SpannableString使用详解
  19. python编码(三)
  20. pythonDjango开发-安装第三方插件

热门文章

  1. 【hdu2457】ac自动机 + dp
  2. solr 7.x 查询及高亮
  3. 多域名绑定同一IP地址,Node.js来实现
  4. Objective-C的基础数据结构
  5. JScript实现将指定目录下的vc工程加到解决方案
  6. 去除WPF中3D图形的锯齿
  7. 编译wxWidgets —— windows、vc71、bcc32、MinGW与命令行
  8. modern-cpp-features
  9. Ant—使用Ant构建一个简单的Java工程(两)
  10. cross-compile-openssl-windows.sh,cross-compile-curl-windows.sh,cross-compile-zlib-windows.sh,build-zlib-visual-studio-2015-cli.bat