我是一个使用Qt构建和应用工作的学生程序员,我在弄清楚如何在用户退出对话框时不保存更改的情况下遇到一些困难。该对话框主要用于数据输入,因此能够识别是否进行了更改,然后为用户提供退出前保存的选项将非常有用。我浏览了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已经为此准备好了,那就太好了!
最佳答案
您需要重写QWidget的closeEvent()
方法来处理对话框的退出按钮。该文档甚至给出了一个看起来很奇怪的示例:
void MainWindow::closeEvent(QCloseEvent *event)
{
if (maybeSave()) {
writeSettings();
event->accept();
} else {
event->ignore();
}
}
maybeSave()
将进行比较以查看是否有任何更改。关于c++ - 处理退出而不保存Qt,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10417914/