我的应用程序的closeEvent()
看起来像这样(在Windows上为Qt 5.8.0):
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
(有趣的是它的反值)。还是我在这里做错了什么?
请原谅任何错字,因为我无法在此处复制实际代码。
答案 0 :(得分:0)
在此处查看QMessageBox参考。
应该返回standardButton回复之一。您正在使用QDialogBox
的回复,QMessageBox
已覆盖QDialogBox
的{{1}}方法。
您要检查以下内容:
exec
来自同一链接的来源。