在Qt中处理退出而不保存

Wyl*_*SG. 1 c++ user-interface qt exit qdialog

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

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
}
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!如果Qt已经拥有了这个东西真的很棒!

tal*_*las 7

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

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

哪里maybeSave()可以比较看看是否有任何变化.