Qt開發 Qt 捕捉視窗關閉事件與訊號的捕捉

2021-06-06 15:07:47 字數 1299 閱讀 4550

有時候我們希望在關閉視窗之前做一些操作,例如儲存快取資料或向使用者提示是否關閉視窗等等。

由於一般的視窗都是繼承自qwidget, 那麼我們可以通過覆蓋qwidget中的虛函式closeevent(qcloseevent* event);來達到這個目的。

(1)首先新增依賴庫:

#include

(2)接著宣告和定義closeevent函式: 

a).h檔案

protected:

void closeevent(qcloseevent *event);

b).cpp檔案

void mainwindow::closeevent(qcloseevent *event)

剛剛將closeevent應用在了乙個小例子上面: 

我在主程序中fork()了乙個子程序,希望在關閉主視窗後(也就是主程序退出)結束子程序。那麼這個時候一般的做法就是監聽視窗的關閉事件;然後將要關閉的視窗向本身程序(父程序)傳送sigint訊號,主程序通過已註冊好的訊號捕捉函式來結束子程序。

**演示:

(1)main.cpp檔案

int pid_t pid;

pid_t child_make()

//todo: 以下是子程序的邏輯部分

}// 結束子程序

void sig_int(int signal)

int main(int argc, char *argv)

(2)mainwindow.h檔案

#include #include namespace ui 

class mainwindow : public qmainwindow

;

(3)mainwindow.cpp檔案

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include mainwindow::mainwindow(qwidget *parent) :

qmainwindow(parent),

ui(new ui::mainwindow)

mainwindow::~mainwindow()

// 在closeevent內實現具體邏輯

void mainwindow::closeevent(qcloseevent *event)

Qt捕捉視窗關閉事件

有時候我們希望在關閉視窗之前做一些操作,例如儲存快取資料或向使用者提示是否關閉視窗等等。由於一般的視窗都是繼承自 qwidget,那麼我們可以通過覆蓋 qwidget 中的虛函式 closeevent qcloseevent event 來達到這個目的。1 首先新增依賴庫 include 2 接著宣...

QT 關閉視窗與資源釋放問題

對於使用指標,使用new建立的視窗,當然可以使用delete顯示的釋放其占用的資源 widget w new widget delete w 對於使用指標,使用new建立的視窗,還可以使用qwidget setattribute方法來當視窗關閉後自動釋放其占用的資源,而不使用者顯示的去呼叫delet...

Qt捕捉最大最小化事件

使用場景 沿用qt框架自帶的最大最小化按鈕的情況下又希望自主處理放大縮小事件 解決方法 過載 void changeevent qevent event 函式,監聽windowsate 並處理。例子 h void changeevent qevent event cpp void maywidget...