Мое приложение closeEvent()
выглядит примерно так (Qt 5.8.0 в Windows):
void MainWindow::closeEvent(QCloseEvent *event)
{
if(some_changes_were_made) // bool
{
QMessageBox mbox;
mbox.setText("Page(s) have been changed.");
mbox.setInformativeText("What do you want to do?");
mbox.addButton("Exit now", QMessageBox::AcceptRole);
mbox.addButton("Save page(s) first", QMessageBox::RejectRole);
int exit_code = mbox.exec();
if(exit_code == QDialog::Rejected)
{
// bail out of the close event so the user can save pages
event->ignore();
return;
}
}
event->accept();
}
Мне любопытно, если документация неверна, в которой говорится, что exec()
возвращает QDialog::DialogCode
.Кажется, на самом деле он возвращает QMessageBox::ButtonRole
(что интересно - это обратное значение).Или я просто что-то здесь не так делаю?
Прошу прощения за любые опечатки, поскольку я не могу скопировать действительный код здесь.