1. 程式人生 > >2-Qt關閉子視窗時執行特定程式碼

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("關閉了視窗");
}