QT创建的窗口,如何接收点击窗体右上角'x'关闭窗口所发出的信号

1、介绍

用户在让一个窗体关闭之前,我们可能想先让它执行一些操作再退出。

我们可以使用QWidget类中的void closeEvent ( QCloseEvent *event )函数,此函数为定义为QWidget类的虚函数,可由我们来重写此函数。

在此窗体发出关闭信号时,会执行此函数。

2、使用

1、在创建窗体的.cpp文件中定义函数,并进行重写,例:

  void MainWindow::closeEvent( QCloseEvent *event )
  {
      if ( maybeSave() ) {
          writeSettings();
          event->accept();
      } else {
          event->ignore();
      }
  }

可以通过参数event来控制是否让窗体关闭
event->accept(); // 默认情况下接收关闭信号,关闭窗体
event->ignore(); // 忽略关闭信号,阻止窗体关闭

2、
在对应的.h文件中的private:里声明此方法原型。

3、在.cpp文件顶部#include "QCloseEvent",作用是让编译器知道参数中的event的类型,不包含此头文件的话将产生error: invalid use of incomplete type 'class QCloseEvent' event->accept();报错信息。

posted @ 2022-07-04 17:17  Jude_Zhang  阅读(2120)  评论(0编辑  收藏  举报