如果需要在点击主窗口的关闭按钮时判断是否需要保存,可采用如下方式Override closeEvent。
其中变量bool this->m_bProjectSaved负责表示当前项目是否需要保存,函数void CheckChanges()负责与用户交互决定是否保存。
void MainWindow::closeEvent(QCloseEvent *event)
{if(this->CheckChanges())
event->ignore();
else
event->accept();
}
int MainWindow::CheckChanges()
{
if(this->m_bProjectSaved)
return 0;
QMessageBox l_msgBox;
l_msgBox.setText(tr("The project has been modified."));
l_msgBox.setInformativeText(tr("Do you want to save the changes?"));
l_msgBox.setStandardButtons(QMessageBox::Save
| QMessageBox::Discard
| QMessageBox::Cancel);
l_msgBox.setDefaultButton(QMessageBox::Save);
int ret = l_msgBox.exec();
switch (ret)
{
case QMessageBox::Save:
this->slotSave();
return 0;
break;
case QMessageBox::Discard:
return 0;
break;
case QMessageBox::Cancel:
return -1;
break;
}
}