处理退出而不保存在Qt中

Handling exit without saving in Qt

本文关键字:存在 Qt 保存 退出 处理      更新时间:2023-10-16

我是一名使用Qt构建和应用程序进行工作的学生程序员,我很难弄清楚如何处理用户退出对话框而不保存更改。该对话框主要用于数据输入,因此能够识别是否已进行更改,然后为用户提供在退出之前保存的选项将非常有用。我在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
}

任何帮助不胜感激!如果Qt已经有这方面的东西,那就太好了!

您需要覆盖 QWidget 的 closeEvent() 方法来处理对话框的退出按钮。该文档甚至给出了一个示例,该示例看起来奇怪地类似于您正在寻找的内容:

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

maybeSave()会在哪里进行比较,看看是否有任何变化。