Qt5.9關閉子視窗時執行特定程式碼(解構函式、關閉視窗)(setAttribute(Qt::WA_DeleteOnClose)、closeEvent(QCloseEvent* event))
阿新 • • 發佈:2019-02-17
本文主要總結在關閉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("關閉了視窗");
}
參考內容: