在Qt中处理退出而不保存

时间:2012-05-02 16:32:08

标签: c++ qt user-interface exit qdialog

我是一名学生程序员,他使用Qt来构建和应用工作,我很难弄清楚当用户退出Dialog而不保存更改时如何处理。该对话框主要用于数据输入,因此能够识别是否已经进行了更改,然后在退出之前向用户提供保存选项将非常有用。我查看了Qt's Documentation on QDialog并且没有找到与按下退出按钮时返回的模式有关的任何内容。有一种方法可以确定何时单击退出按钮是首要任务。此外,作为一名学生程序员,我也愿意接受有关如何在数据之前和之后进行比较的最佳实践的任何想法。数据输入表格,所以我猜我必须做这样的事情

connect(some kinda exit handler, SIGNAL(clicked), this, SLOT(comparePreAndPostTable)

QVector<QString> prechanges =  everything from the table
QVector<QString> postchanges = everything from table when exit is clicked


if(prechanges != postchanges)
{
     Give oppertunity to save
}

感谢任何帮助!如果Qt已经拥有了这个东西真的很棒!

1 个答案:

答案 0 :(得分:7)

您需要覆盖QWidgetcloseEvent()方法来处理对话框的退出按钮。文档甚至给出了一个奇怪地看起来像你正在寻找的例子:

 void MainWindow::closeEvent(QCloseEvent *event)
 {
     if (maybeSave()) {
         writeSettings();
         event->accept();
     } else {
         event->ignore();
     }
 }

其中maybeSave()会比较以查看是否有任何更改。