1. 程式人生 > >Qt4學習筆記(十 一),Qt 捕捉視窗關閉事件與訊號的捕捉

Qt4學習筆記(十 一),Qt 捕捉視窗關閉事件與訊號的捕捉

有時候我們希望在關閉視窗之前做一些操作,例如儲存快取資料或向用戶提示是否關閉視窗等等。由於一般的視窗都是繼承自QWidget, 那麼我們可以通過覆蓋QWidget中的虛擬函式closeEvent(QCloseEvent* event);來達到這個目的。(1)首先新增依賴庫:
  1. #include <QCloseEvent>
(2)接著宣告和定義closeEvent函式:     a).h檔案
  1. protected:  
  2.      void closeEvent(QCloseEvent *event);  
    b).cpp檔案
  1. void MainWindow::closeEvent(QCloseEvent *event)  
  2. {  
    1. QMessageBox::StandardButton button;  
    2.     button=QMessageBox::question(this,tr("退出程式"),QString(tr("確認退出程式")),QMessageBox::Yes|QMessageBox::No);  
    3.     if(button==QMessageBox::No)  
    4.     {  
    5.         event->ignore(); // 忽略退出訊號,程式繼續進行
    6.     }  
    7.     elseif(button==QMessageBox::Yes)  
    8.     {  
    9.         event->accept(); // 接受退出訊號,程式退出
    10.     }  

  3.     //TODO: 在退出視窗之前,實現希望做的操作
  4. }