每當點擊窗口上方的關閉按鈕,就會引發窗口的bool close()響應,如果窗口被關閉返回true,否則返回false。如果沒有重載,close()會調用void closeEvent(QCloseEvent *)函數,缺省關閉窗口並返回true;作爲protected的成員,這個函數同樣可以重載。比如
void [MainWindow Name]::closeEvent(QCloseEvent *event)
{
int r=QMessageBox:question(this,tr("Last Hint"),tr("Are you sure you want to quit?"),QMessageBox::Yes|QMessageBox::Default,QMessageBox::No|QMessageBox::Escape);
if (r==QMessageBox::Yes)
event->accept();
else
event->ignore();
}
其中accept就是讓這個關閉事件通過並順利關閉窗口,ignore就是將其忽略回到窗口本身。這裏可千萬得注意在每一種可能性下都對event進行處理,以免遺漏。