1

我是一名学生程序员,使用 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 已经为此提供了一些东西,那就太好了!

4

1 回答 1

7

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

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

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

于 2012-05-02T16:36:19.287 回答