2-Qt关闭子窗口时执行特定代码

Posted zhumengdexiaobai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2-Qt关闭子窗口时执行特定代码相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/naibozhuan3744/article/details/82689434

 

本文主要总结在关闭qt的QWidget子窗口瞬间,执行特定代码。由于主窗口关闭时,会自动执行析构函数,而子窗口关闭时,却不会调用析构函数,进过博主查阅资料,发现有两种方法可以在子窗口关闭时,调用析构函数或者执行一个关闭函数。

第一种方法是关闭窗口时调用窗口的析构函数,直接在构造函数添加如下代码,然后就可以调用子窗口析构函数了。

setAttribute(Qt::WA_DeleteOnClose);
 

第二种方法是调用QCloseEvent类。当窗口关闭瞬间,会发射一个关闭信号,调用槽函数void closeEvent(QCloseEvent* event);只需要重写该虚函数,在里面写入需要执行的特定代码就可以满足要求。只需要在需要关闭的窗口重写虚函数closeEvent(),在关闭该窗口瞬间,会自动调用该虚函数。该方法不会收其它窗口影响,也即是其它窗口关闭,不会调用这个窗口的closeEvent()虚函数。只会在该窗口类起作用。具体的代码用法如下所示:

#include <QCloseEvent>

protected:
void closeEvent(QCloseEvent* event);
 

void Widget::closeEvent(QCloseEvent *event)
{
Q_UNUSED(event);
qDebug("关闭了窗口");
}












以上是关于2-Qt关闭子窗口时执行特定代码的主要内容,如果未能解决你的问题,请参考以下文章

怎么实现父窗口打开子窗口,子窗口关闭后自动刷新父窗口?

2016-11-6坚持学习Day21子窗口关闭时,同步关闭它的主窗口

关闭父窗口时关闭所有子窗口

DELPHI中MDI子窗口的关闭 和打开

退出主窗口时关闭子窗口

子窗口关闭,父窗口如何刷新