Qt中的close和closeEvent


對於一個QDialog類的對話框可以用reject()和accept()來控制關閉時的行爲。對於QMainWindow而言則可以通過close()信號和closeEvent(QCloseEvent *)函數。當然,這兩個都是從QWidget那裏繼承過來的,所以嚴格說來只要是Qt控件就都能用,但應該還是對主窗口應用比較多吧。
每當點擊窗口上方的關閉按鈕,就會引發窗口的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進行處理,以免遺漏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章