Linux学习笔记(八十四)——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进行处理,以免遗漏。


转自:http://huanhaoadam.wordpress.com/2009/09/28/linux%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%EF%BC%88%E5%85%AB%E5%8D%81%E5%9B%9B%EF%BC%89%E2%80%94%E2%80%94qt%E4%B8%AD%E7%9A%84close%E5%92%8Ccloseevent/

你可能感兴趣的:(Linux学习笔记(八十四)——Qt中的close和closeEvent)